기타/개발툴

[인텔리제이] 디버그 모드 활용

steadyMan 2023. 5. 5. 17:21

STS에서도 디버그 모드를 지원해 주지만 제공되는 기능에 비해 사용을 효과적으로 하지 못했는데 

더욱 견고한 기능들을 제공하는 인텔리제이에서는 효과적으로 사용하기 위해 작성합니다. 


Break Point

LIne Number와 코드 사이 여백을 클릭하면 Break Point를 설정할 수 있다. 

해당 Break Point을 우클릭하여 Break 조건을 입력할 수 있다. 조건을 입력하면 해당 조건이 true일 때만 Break가 걸린다

 

반복문 실행중에 특정 조건의 상황을 확인할 때 용이하게 사용 가능하다. 


디버그 제어

break가 걸린 상태에서 여러 기능을 통해 제어가 가능하다. 

resume

  • 단축키 : F9
  • 기능 : 로직 계속 수행(다음 Break Point로 이동) 

로직을 계속해서 수행하되 다음 Break Point가 존재할 경우 Break가 걸린다.

Step Over 

  • 단축키 : F8
  • 기능 : break된 라인(Line Number)에서 다음 라인으로 이동한다.

Break 된 177라인에서 178라인으로 이동

step into 

  • 단축키 : F7
  • 기능 : 현재 break된 라인의 로직 안으로 이동한다.

F7를 누를경우 play()로 이동하게된다.

Force Step into

  • 단축키 : Alt + Shift + F7
  • 기능 : skipped를 무시하고 해당 라인 메서드 선언부로 이동한다. 

Step into의 경우 네이트 메서드 혹은 시스템메서드나 외부 라이브러리인 경우 디버깅에서 skipped 되는데 

Force Step into는 skip을 무시하고 해당 메서드 선언부로 이동한다. 

Step out 

  • 단축키 : Shift + F8
  • 기능 : 현재 걸려있는 Break Point에서 호출한 곳으로 이동한다. 

Ad.play()의 break point

play()의 break point에서 shift+F8을 누르면 

play()를 호출한 곳으로 이동한다. 

Run to Cursor

  • 단축키 : Alt + F9
  • 기능 : 현재 포커스 되어있는 라인으로 이동한다. 

176라인의 Break Point에서 185라인에 포커스를 두고 Alt+F9를 입력하면 커서가 있는 라인으로 바로 이동하게 된다. 

 

Break Point를 지정하지 않고 빠르게 디버깅이 필요할때 사용가능하다. 


Evaluate 

  • 단축키 : Alt + F8
  • 기능 : break된 상태에서 사용가능 범위에 있는 코드를 실행시킬 수 있다. 

Evaluate를 실행시키면 팝업되는 창에서 코드를 실행시키고 결과를 바로 확인할 수 있다.

현재 break된 지점에서 사용가능한 코드(클래스 필드, 메서드 필드)만 사용가능하다. 

Watch

디버그 모드 하단의 Watch탭에서 사용가능하다. 

Watch대상으로 지정할 대상을 입력한다.

Watch의 대상으로 지정하여 해당 데이터의 변경을 바로 확인할 수 있다. 

Evaluate와 동일하게 break된 지점에서 사용가능한 필드, 클래스만 사용가능하다. 

 

하단의 ad.getComponentSeq는 현재 break 된 ad.setComponentSeq(2)가 실행되면 2로 변경된다.

 

Watch에서는 break된 지점의 클래스, 필드에 대한 데이터를 변경하는 기능도 지원한다. 

 

인텔리제이에서 제공하는 수 많은 기능을 활용하여 효과적으로 디버깅할 수 있도록 연습하자!