IDE/Intellij

인텔리제이(Intellij) 디버깅 하는법

소프 2020. 11. 29.

지정된 라인에서 실행을 멈추고 싶은 부분에 BreakPoint 지정

 

※ 추가로 Break Point에서 오른쪽 버튼을 눌러 조건을 걸수 있음

디버깅 버튼

 

resume

  • 기능 : 다음 break point로 이동

  • 단축키 : F9

step over

  • 기능 : 현재 break된 라인에서 다음 라인으로 이동

  • 단축키 : F8

break 걸린 라인을 전부 실행( solution() 실행) 후, 다음 라인으로 이동

step into

  • 기능 : 현재 break된 라인에서 실행하고 있는 라인( solution() 함수)으로 이동한다.

  • 단축키 : F7

 

 

Force step into

  • 기능 : 다음 실행되는 라인으로 이동하나, step into와 달리 Stepping을 무시하고 진행한다.

  • 단축키 : alt + shift + F7

ctrl + shift + s(Settings 단축키) -> Skil simple getters 체크했다고 가정

 

break point를 지정 후,

(1) step into를 누를시 다음줄로 넘어감

 

(2) force step into를 누를시

 length()메소드까지 확인

 

확인이 불필요한 getter , 생성자 등에 skip 옵션을 설정한 뒤, skip이 필요할 때는 step into로, 

전부 확인이 필요하면 force step into로 skip을 무시하고 확인할 수 있다.

 

 

Step out

  • 현재 break된 라인에서 호출한 곳으로 이동한다.

  • 단축키 : shift+F8

solution()안으로 들어간 상태서

step out으로 빠져나왔다.

 

drop frame

  • 기능 : call stack을 거슬러 올라간다.

  • 단축키 : 없음

이것만 보면 step out과 별차이 없어 보이는데, 큰 차이점은 step out은 해당 라인이 실행된 후 돌아가지만, drop frame은 해당 라인이 실행 되기 전에 돌아간다.

 

 

Run to Cursor

  • 기능 : 포커스 되어있는 라인으로 이동

  • 단축키 : Alt + F9

F9를 누르면 커서가 있는 곳으로 Break Point가 이동

보통 단발성으로 break를 걸고 싶을 때 사용한다.

 

 

Watch와 Call Stack

Evaluate

break된 상태에서 코드를 실행할 수 있는 방법은 2가지가 있다.

Evaluate와 Watch인데, 두가지를 다 학습하고 필요에 따라 쓰자.

 

기능 : break된 라인에서 사용가능한 모든 코드를 실행할 수 있음

단축키 : Alt + F8

 

Evaluate를 클릭하면 아래와 같이 팝업이 하나 등장하는데, 여기서 확인하고 싶은 코드를 입력하고 실행시키면 결과를 바로 확인할 수 있다.

모든 코드를 사용할 수는 없고 현재 라인에서 사용 가능한 코드(메소드, 변수, 클래스 필드 등)만 사용할 수 있다.

=> solution() 메소드가 존재하는 부분에 Break Point를 걸고 evaluate로 solution()결과를 확인했다.

 

Watch

Evaluate와 기능은 거의 동일하다

단축키는 없지만 사용법은 간단하다.

디버그 모드에서 아래처럼 watch를 활성화 시키자.

 

+버튼을 눌러서 실행할 것을 적고 확인하면된다.

 

Evaluate vs Watch

2개의 기능은 동일하다.

단, Evaluate의 경우 코드를 계속 수동 실행해야 하지만, Watch의 경우 삭제하지 않는 한, break line이 실행될때 자동 실행된다.

값을 변경하는 코드를 watch에 등록했다면 의도치 않게 값이 변경되서 다른 로직을 수행하게 되는 경우도 있으니 주의하자. 하지만 watch는 여러 디버깅 코드의 결과를 동시에 확인이 가능하고, 반복적으로 디버깅 코드를 사용할 필요가 없어서 이동욱님은 선호하신다.

evaluate를 선호하시는 분들의 경우 단축키 때문에 많이들 사용한다.
watch는 기본 단축키가 없어서 마우스를 사용하거나, 단축키를 추가해야하는데 evaluate는 option + F8으로 열고 바로 코드 작성 후 실행하면 되서 사용하기 편하다.

 

Call Stack

디버깅 화면의 좌측 하단에는 해당 break line에 오기까지의 call stack이 출력된다.

이를 통해 이전에 어떤 값들이 넘어 온것인지, 이전에 다른 연산을 했으면 어떻게 값이 바뀔지를 모두 확인할 수 있다.

play()라는 메소드를 호출한 main으로 가서 값을 확인할 수 있다.

 

이동후에는 break line에서 했던것 처럼 Variables와 Watch를 이용해 확인하고자 하는 값의 코드를 확인할 수 있다.

 

 

참조

github.com/jojoldu/blog-code/tree/master/intellij-debugging

 

'IDE > Intellij' 카테고리의 다른 글

인텔리제이 단축키 응용  (0) 2021.03.17
인텔리제이 단축키 정리 - 2  (0) 2021.03.15
인텔리제이 단축키 정리 - 1  (0) 2021.03.11

댓글