최근 Spring Security 원리와 구조에 대해 학습하고 있다. Authentication 객체에 break point를 걸어 어떤 메서드와 필터가 호출되는지 확인하던 와중에 디버깅 모드에서 코드를 실행할 수 있는지에 대해 찾아보게 되었다. 찾아본결과 2가지의 방법으로 디버깅 모드에서 코드를 실행할 수 있었다.
Intellij 의 New UI를 사용한 상태입니다.
🧩 Evaluate
하단 디버거 탭에서 ㆍㆍㆍ [more] 버튼을 클릭하면 Evaluate Expression 을 실행할 수 있다. 윈도우 단축키는 Alt+F8이다.
다음과 같은 화면에서 Expression 입력란에 코드를 입력하고 Enter를 누르면 Result 란에 코드에 대한 결과값을 확인할 수 있다.
- 단, 모든 코드를 사용할 순 없다. 현재 point의 클래스 필드, Stack에 저장된 메소드 변수 값만 사용할 수 있다.
별도의 창 없이 디버거 탭 상단에 있는 입력란을 활용해도 코드를 실행시킬 수 있다.
Ctrl + Shift + Enter 입력을 통해 Expression의 코드를 Watches 에 추가할 수 있다.
🧩 Watches
Evaluate과 마찬가지로 코드를 실행시킬 수 있는 기능이다. Evaluate은 별도로 코드를 실행시켜주어야 결과 값을 확인할 수 있지만, Watches는 코드를 등록해놓으면 break line이 바뀔 때마다 실행되어 결과값을 바로 확인할 수 있다.
하지만, 코드가 자동으로 실행되기 때문에 값을 변경하는 코드를 등록해놓으면 의도치 않은 결과가 발생할 수 있으니 주의하자.
Evaluate과 마찬가지로 디버거 탭의 상단 입력란에서 Watches 를 추가할 수 있다. 하지만, 별도의 창으로 분리하는 것이 더 보기 편하다.
디버거 탭 제일 오른쪽 위에 아이콘 중에서 보라색 Layout Settings 아이콘이 있다. 클릭하고 Separate Watches 를 체크하여 Watches 탭을 분리하자
Separate Watches를 체크하면 오른쪽에 Watches를 볼 수 있는 별도의 탭이 생성된다. 이 공간에서 코드를 등록해놓으면 된다.
Watches 에 등록한 코드는 break line 이 바뀔때마다 자동으로 결과값이 바뀌므로 값의 변경을 확인할 때 더 유용하다.