디버깅(IntelliJ)
디버그를 알기 전에는 오류가 있을 때 어느 부분에 오류가 발생했는지 알고자 System.out.prinln
등 찍어보고는 했는데 디버그를 사용하면 편하게 오류 지점
을 찾아낼 수 있다.
살펴보고자 하는 부분에 중단점(break point)
을 찍고 디버그 버튼(벌레 모양 버튼)을 누른다. 단축키는 windows
기준 Shift+F9
이다.
그러면 다음과 같이 하단에 표시가 된다.
좌측에는 break point
가 잡히기까지 실행된 스택들을 나타낸다. 수많은 스택을 타고와서 메서드가 실행된 자리까지 어떤 스택들이 실행되었는지를 나타내고 우측, variables
는 지역 스코프에 지금 담겨져 있는 변수들이 전부 나온다.
또한 눈처럼 보이는 버튼 우측의 Resume
버튼은 다음 브레이크 포인트로 넘어갈 수 있게 된다.
위의 사진은 Resume
버튼을 한번 눌렀을 경우로 값이 변한 것을 볼 수 있다.
꺽인 화살표처럼 생긴 Step Over
는 다음 줄로 넘어가는 것이다.
즉, resume
는 다음 break point
로 넘어가는 것이고, step over
는 다음 줄로 넘어가는 것이다.
하단을 가리키는 화살표 Step Into
는 다음줄로 가게된다. 만약 생성자라면 생성자로 들어가게 되는 것이다.
상단을 가리키는 화살표 Step out
은 스택을 나오게 되는 것이다. 실행을 시키고 스택을 나오게 된다. Step Into
의 정반대라고 생각하면 된다.
Drop frame
버튼은 실행했던 거를 다 취소하는 것이기 때문에 실행되지 않고 Step Out
된다는 차이가 있다.
break point
에 우클릭을 하면 컨디션을 설정할 수 있다. boolean
값을 주면 되는데
예를들어 for문 60번을 돌아야되는데 58번 째의 값을 알고싶은데 실수로 59번째로 넘어가는 경우 처음부터 다시 해야되는 번거로움이 존재한다.
user.getNanme().equals = "~~"
이런식으로 특정 부분을 지정해서 사용할 수 있다.
컨디션을 설정하면 다음과 같이 물음표가 생긴다.