이는 애플리케이션 결함을 식별하고 해결하는 데 도움이 될 수 있습니다. 이 기사에서 저자는 일반적으로 사용되는 개발 도구인 Eclipse를 사용하여 Java 애플리케이션을 디버깅합니다. 그러나 여기에 소개된 디버깅 방법은 기본적으로 보편적이며 NetBeans IDE에도 적용 가능합니다.
시작하기 전에 많은 편의를 제공하는 Eclipse 단축키 기사를 읽어 보시기 바랍니다. 본 글에서는 Eclipse Juno 버전(Eclipse 4.2)을 사용하고 있습니다. 시작하기 전에 3가지 제안을 드리고 싶습니다!
System.out.println을 디버깅 도구로 사용하지 마십시오. 관련된 모든 구성 요소에 대한 로깅 수준을 활성화하고 로그 분석기를 사용하여 로그를 읽으십시오.
1.조건부 중단점
중단점을 추가하는 방법을 모르는 경우 왼쪽 패널(줄 번호 앞)을 클릭하면 중단점이 생성됩니다. 디버깅 인터페이스의 "Breakpoints" 보기에는 생성된 모든 중단점이 나열됩니다. 여기에 부울 조건을 추가할 수 있습니다. 즉, 중단점이 활성화되고 부울 조건이 true이면 중단점이 실행되고, 그렇지 않으면 실행을 건너뜁니다.
2. 예외 중단점
중단점 보기에는 J! 표시 버튼이 있습니다! 이 버튼을 사용하여 Java 예외 중단점을 추가할 수 있습니다. 예를 들어, 프로그램이 NullPointerException을 만나도 디버깅을 계속할 수 있도록 하려면 이 버튼을 사용하여 예외 중단점을 추가할 수 있습니다!
3. 모니터링 포인트
이는 선택한 속성에 액세스하거나 수정될 때 프로그램 실행을 중지하고 디버깅을 허용하는 매우 유용한 기능입니다. 아웃라인 뷰에서 클래스 변수를 선택하고 컨텍스트 메뉴에서 Switch Watchpoint를 선택하면 속성 watchpoint가 생성되고 모든 watchpoint가 Breakpoints 뷰에 목록 형식으로 표시됩니다.
4.평가/검사
Ctrl+Shift+D 또는 Ctrl+Shift+I를 눌러 선택한 변수 또는 표현식의 값을 표시합니다. 변수나 표현식에 영구 감시점을 추가할 수도 있으며, 프로그램이 디버깅되면 이러한 감시점이 표현식 보기에 표시됩니다.
5. 변수값 수정
디버깅하는 동안 변수 값을 수정할 수 있습니다. 먼저 변수를 선택한 다음 변수 보기로 들어가서 변수 유형에 따라 해당 값 열에 값을 입력하세요.
6. Main 함수에서 실행을 중지합니다.
실행/디버그 설정의 구성 편집 대화 상자에 "Main" 탭이 있고 "Stop in main" 확인란을 선택할 수 있습니다. 이 옵션을 선택하면 기본 메서드를 기반으로 Java 프로그램을 디버깅할 때 프로그램이 기본 메서드의 첫 번째 줄에서 실행을 중지합니다.
7. 환경변수
시스템 속성에 환경 변수를 추가하는 대신 구성 편집 대화 상자에서 쉽게 추가할 수 있습니다.
8.프레임에 드롭
이것은 또한 내가 가장 좋아하는 기능 중 하나입니다. 디버깅하는 동안 호출 스택 프레임의 시작 부분으로 다시 이동할 수 있으며 변수 값은 시작 부분으로 돌아갑니다. 롤백에 따라 스택의 깊이를 조정합니다. 이 기능의 주요 목적은 메소드가 실행되기 시작한 상태로 모든 변수의 상태를 빠르게 되돌리는 것입니다. 그런 다음 반복해서 다시 실행할 수 있습니다. 우려되는 부분에서는 여러 번 디버깅할 수 있지만 실행 과정에서 몇 가지 부작용이 있을 수도 있습니다. 예를 들어 데이터베이스에 삽입된 데이터는 삭제할 수 없습니다.
9. 분포 필터링
(F5) 메소드를 입력하면 외부 라이브러리(예: java.*)에 액세스할 수도 있습니다. 이 라이브러리가 필요하지 않을 수 있으므로 Perference 탭 페이지에 필터를 추가하여 이 패키지를 제외할 수 있습니다.
10. 입장, 퇴장 및 복귀
마지막 요점으로 이 부분을 남겨두겠습니다. 다음은 디버깅 중에 이해해야 하는 사항입니다(그리고 숙지하는 것이 좋습니다).
F5 – Enter: 다음 단계로 이동합니다. 현재 라인에 메서드 호출이 있으면 컨트롤은 호출된 메서드의 첫 번째 라인으로 점프하여 실행합니다.
F6 - 점프 아웃: 다음 줄로 이동합니다. 현재 줄에 메서드 호출이 있으면 바로 다음 줄로 이동하여 실행됩니다. 호출된 메소드 본문에 들어가지 않습니다.
F7 - 복귀: 현재 메소드에서 빠져나와 실행을 계속합니다.
F8——실행을 위해 다음 중단점으로 이동합니다.