wiki:EclipseDebug

디버그 모드실행

  • F11
  • Run > Debug As
  • Run > Debut Configurations에서 디버그 다이얼로그에서 셋팅 변경 가능
    • Stop in main 체크하면 디버그 모드 실행시 메인함수 첫라인에서 멈춤

브레이크 포인트

에디터 왼쪽의 마커바를 더블클릭하면 브레이크 포인트 토글

브레이크 포인트 활성화/비활성화

  • 브레이크 포인트의 팝업메뉴에서 Disable Breakpoint
  • 또는 Breakpoints View에서 체크 해제하면 동일한 동작

Breakpoints 뷰

  • Remove Selected Breakpoints
  • Remove All Breakpoints
  • Add Java Exception Breakpoint : 특정예외가 발생할 경우 브레이크포인트를 지정한 효과
  • 더블클릭 : 해당 소스 에디터로 이동
  • 그룹별로 볼수도 있슴 : 드랍다운 메뉴에서 group by메뉴에서 선택
  • 메소드 첫 행에 브레이크포인트 설정시 메소드 브레이크 포인트로 설정된다.

Hit Count

  • 브레이크포인트의 지정된 횟수만큼 반복 후 멈춤
  • Breakpoints View에서 브레이크 포인트의 팝업 메뉴에서 Hit Count 메뉴 선택 : 5번 하면 4번까지 수행하고 5번째에서 멈춤

가상 머신 멈추기

  • 프로그램의 모든 스레드를 멈추게 하고 싶을 때 사용 : 멀티스레드 프로그래의 디버깅시 유용
  • 브레이크 포인트의 팝업 메뉴에서 Suspend VM을 선택한다.

메소드 브레이크포인트

  • 메소드 브레이크 포인트의 팝업 메뉴에서
    • Entry : 메소드 진입부분에서 프로그램 멈춤
    • Exit : 메소드가 리턴하기 직전에 프로그램 멈춤

Debug View

툴바 아이콘

  • Resume (F8) : 멈추어 있던 쓰레드를 다시 진행, 다음 브레이크포인트까지 실행
  • Suspend : Debug 뷰에서 선택한 스레드를 멈춤
  • Terminate (Ctrl + F2) : 프로그램을 종료
  • Step Info(F5) : 프로그램을 한스텝 진행 (메소드 호출부일 경우 메소드로 이동)
  • Step Over(F6) : 현재 코드에서 한스텝 진행
  • Step Return(F7) : 현재의 메소드를 리턴
  • Drop to Frame : 선택한 스택 프레임의 첫 행으로 실행 포인트를 이동, 특정 메소드를 실행하다 그 메소드의 처음부터 디버깅을 원할때

스텝 필터링

  • 메소드가 필터링 대상이 되는 클래스의 것이라면 Step Info를 눌러도 해당 메소드로 스텝이 이동하지 않는다.
  • Preferences > Java > Debug > Step Filtering 에서 설정
    • Filter synthetic methods : 모든 synthetic 메소드를 필터링한다. 일반적으로 프로그래머가 디버깅할 필요 없슴
    • Filter static initializers : 모든 클래스의 정적 초기화 블록과 정적 멤버 초기화 코드를 필터링한다.
    • Filter constructors : 모든 생성자를 필터링한다.
    • Step through filters : 필터링 대상이 되는 클래스 안에서 필터링 대상이 아닌 클래스의 메소드를 호출하는 경우 동작 설정

변수 값 확인

  • Variables View에서 현재 스택 프레임에서 볼수 있는 변수 값을 확인 가능하다.

수식 평가

Display View

  • Window > Show View > Display를 선택
  • Display View에 현재 스택 프레임의 컨텍스트에서 실행할 수 있는 모든 종류의 수직을 입력하고 실행 가능
  • 수식을 입력하고 선택 후 Display를 선택(Ctrl + Shift + D)하면 결과값이 출력된다.
  • Content Assist 기능 사용 가능

Inspect

  • 수식의 평가결과가 객체일 경우 toString()메소드를 이용해 문자열로 변환된 결과만 보여주므로,
  • Inspect를 선택(Ctrl + Shift + I)하면 팝업으로 객체 내용을 표시해준다.
  • 팝업상태에서 다시 (Ctrl + Shift + I)하면 내용이 Expressions 뷰로 이동한다.

Watch

  • 수식의 값이 변화되는 과정을 추적하고 싶을 경우 사용
  • 선택한 수식을 매번 실행시마다 Expressions 뷰에 표시하는 기능

논리적 구조 보기

  • List나 Map등 컬렉션 객체에 포함된 객체 리스트를 보고싶을 경우
  • Expressions 뷰의 Show Logical Structure 아이콘을 누르면 리스트에 포함된 객체 목록만 표시

디테일 포맷터

  • Expressions 뷰의 오른쪽은 수식이나 객체의 값이 텍스트로 표시된다.
  • 상세정보 표시창(Details Pane)이라 하며, 원하는 타입에 대해 표시할 내용을 변경 가능
  • Expressions 뷰에서 수식을 선택한 후 팝업메뉴에서 New Detail Formatter을 선택
  • 다이얼로그에서 수식을 입력 한다.
  • 또는 Preferences > Java > Debug > Detail Formatters

변수값 수정하기

  • Variables 뷰의 변수를 선택해서 변수값을 디버깅 중에 변경할 수 있다.

Hot Code Replace

  • 메소드 내부 코드를 간단히 수정할 경우 디버깅 상태에서 바로 적용 가능하다.
  • 단, 메소드나 필드를 추가한 경우 적용되지 않음

Drop to Frame

  • 디버깅 중 메소드의 처음으로 되돌아 갈 수 있다.

디버깅 환경설정

참조 라이브러리 소스코드 첨부

  • 프로젝트의 Properties > Java Build Path > Libraries 탭
  • 라이브러리 파일의 하위 항목에 Source Attachment 항목을 Edit로 소스 코드를 지정

원격 디버깅

  • 다른 호스트나 로컬호스트의 다른 JVM에 네트워크를 통해 접속해 디버깅
  • Run > Debug Configurations 에서 Remote Java Application 항목으로 원격 디버깅 설정을 만들수 있다.