01/07
디버깅을 하다 보면, 단순히 로그 찍는 것으로는 한계가 있다. 그래서 중단점을 걸어 놓고 확인하는 것이 정말 도움이 많이 되는데, 잘 사용하고 있던 도중 이 날 처음 보는 기능이 있었어서, 정리해볼 예정.
유형
대부분은 적당히 찍어 놓고 사용하게 되지만, breakpoint 에도 종류가 있다.
Line Breakpoint
지정한 코드 line 에 도달했을 때, 프로그램을 중단한다. 실행 가능한 모든 라인에 설정이 가능하며, 보통 편하게 사용할 때 많이 사용하게 된다. 해당 라인의 실행 전에 멈추기 때문에, 이후 다음 단계 실행을 통해 진행 과정을 확인할 수 있다.
Method Breakpoint
특정 method 진입/종료 시점에 프로그램을 중단한다. 메서드 정의 부분에 중단점을 설정하면 되는데, line bp 로 정의 부분을 잡아 놓았을 때와 비슷한 역할을 한다. class 에서도 마찬가지로 동일하게 사용할 수 있다.
Field Breakpoint
특정 field 가 읽히거나, 값이 write 될 때, 프로그램을 중단한다. 특정 필드를 선택하고 중단점을 설정하면, 해당 필드가 초기값으로 초기화 될 때, 그리고 이후 값이 write 될 때마다 중단해준다. 반복과 같은 구문에서 변경값을 매번 확인하고 싶은 경우라던가.. 에 사용하게 되는 방법.
Exception Breakpoint
Throwable 과 그 subClass 가 throw 되었을 때 프로그램을 중단한다. 전역적으로 기본 작동하고 있으며, 그냥 Any Exception 으로 모두 잡아낼수도 있지만, 중단점 관리에서 특정 Exception 을 설정하여 해당 종류에서만 중단할수도 있다.
유용? 한 기능
오늘 이 TIL 을 작성하게 된 이유이기도 한데, 그냥 중단점을 잡는 것 보다는 유용한 기능이 몇가지 있다.
조건 설정하기
breakpoint 를 설정하면, 왼쪽 라인에 빨간 점이 나타나는데, 이를 확인하면 있는 기능 중 하나이다. 위 중단점들 중 아무거나 설정 해 놓으면, 반복 구문같은 곳에서는 매번 같은 곳에서 중단하게 되는데, 확인하고 싶은 '특정 값'이 들어온다 를 조건으로 설정할 수 있다. 이런저런 데이터 처리에서 매우 많은 값들로 인해 중단점을 전부 확인하기 곤란할 때, 특정 값이 들어올 때만을 확인하여 더 편리하게 사용할 수 있는 방법.
Stack Trace
이건 기본적으로 켜 놓는것이 좋다고 생각하는편. 해당 중단점이 위치한 곳으로부터, 어디서 어떤 루트를 거쳐 진입했는지 호출 스택들을 전부 확인할 수 있다. 이상한 곳에서 접근이 된다거나.. 두번 이상 불린다거나.. 하는 부분들을 쉽게 확인 가능하다.
Evaluate
중단되었을 때 사용할 수 있는 기능으로, 해당 라인에서 실행 가능한 코드를 임의로 실행해볼 수 있다. 해당 시점에서의 결과값들이 잘 실행되고 있는지 확인할 수 있는 방법. 혹은 접근이 가능한 상태인지를 확인할 수도 있고..
Watch
마찬가지로 중단되었을 때 사용할 수 있는 기능이지만, 조금 더 유용하다. 계속해서 추적하고 싶은 부분들을 watch 에 등록 해 놓으면, 해당 지점에서 중단 되지 않더라도, 다른 중단점에 멈췄을 때 watch 에 등록했던 필드를 확인할 수 있다. 확인하고 싶은 시점에서 값이 잘 들어있는지를 확인한다거나, 뭔가 잘못 전달되고 있는지를 확인할 수도 있고, 여러모로 정말 유용한 기능. 중단점에서 가장 중요한 기능이라고 개인적으로는 생각한다.
'공부 > TIL•기타' 카테고리의 다른 글
| CGI (0) | 2025.12.10 |
|---|---|
| ORM Document / Docset (0) | 2025.12.01 |
| JSON (0) | 2025.11.24 |
| 편한 유지보수를 위한 방법론 (0) | 2025.11.13 |
| 문서 객체 모델(DOM) (0) | 2025.11.10 |