Intellij에서 유용한 디버그 기능에 대해 알아보겠다.
다음 디버그 방식을 알아두면 Intellij 뿐만 아니라 Jetbrain사의 여러 IDE 혹은 그 밖의 IDE에서 유용하게 활용할 수 있을 것이다.
디버그는 기본적으로 "break point"라는 고정점을 사용한다.
이렇게 고정점을 추가하면(해당 라인을 클릭하면 된다),
디버그 시 고정점에 해당하는 라인 바로 직전까지 실행된 상황을 아래와 같이 보여주게 된다.
1. 왼쪽 블록은 고정점 직전까지의 콜 스택 상황을 파악할 수 있고,
2. 오른쪽 블록은 고정점 직전 까지의 변수와 그에 대한 값을 확인할 수 있다.
앞서 설명한 두 뷰가 오류를 찾아내거나 코드 구조를 파악하기 위한 디버그의 메인 기능이다.
따라서 디버그는 나의 코드 뿐만 아니라 다른 사람의 코드 구조를 파악하거나 프레임워크를 까볼 때 유용하게 사용할 수 있다.
이제부터 intellij 디버그 시 자주 쓰이는 기능들을 단축키와 함께 알아보자.
Debug 모드로 실행하기 - 현재 위치의 메소드
맥: command(⌘) + shift(⇧) + D
윈도우: 없음
현재 위치(커서)의 메소드를 디버그 한다. 즉, 디버그를 시작하는 단축키이다.
혹은 메소드 옆에 "재생" 아이콘을 눌러 디버그를 실행할 수도 있다.
Debug 모드로 실행하기 - 이전 실행
맥: command(⌘) + D
윈도우: Shift + F9
가장 최근에 실행했던 디버그를 현재 위치(커서)와 상관없이 실행한다.
최근 실행했던 디버그는 우측 상단 Run/Debug configurations 상자에 담겨 있다.
이렇게 디버그를 실행하면 다음과 같은 기능들을 사용할 수 있다.
고정점 간에 이동하거나, 한 줄 한 줄 체크하는 등 코드가 진행됨에 따라 스택 상황이나 변수 상황을 확인할 수 있게 하는 좋은 기능들이다.
자주 쓰는 기능들 위주로 알아보자.
Resume
맥: command(⌘) + option(⌥) + R
윈도우: F9
다음 고정점으로 이동한다.
-> resume
Step over
맥:F8
윈도우: F8
다음으로 한 줄 이동한다.
-> Step Over
Step Into
맥:F7
윈도우: F7
Step Over는 현재 메소드에서 한 줄을 이동하는 반면에,
Step Into는 현재 라인의 메소드 안으로 직접 들어간다.
-> Step Into
이렇게 new Project() 생성자 안으로 들어가서 디버그할 수 있다.
Step Out
맥: shift(⇧) + F8
윈도우: Shift + F8
Step Into를 했을 때, 다시 Step Into하기 이전 상태로 돌아온다.
-> Step Out
고정점에 조건 부여
참고로 이렇게 고정점에 오른쪽 클릭을 하면 조건을 부여할 수 있다.
해당 조건에 만족할 때만 고정점 직전에 멈추게 하는 기능이다.
Evaluate Expression
맥: option(⌥) + F8
윈도우: Alt + F8
해당 메소드를 디버그 하던 도중, DB에 Product값들이 잘 들어가 있나 확인하고 싶다면 어떻게 할까?
테스트에 의미 없는 DB 조회 코드를 일일이 추가하기에도 번거로울 것이다.
이 때, 사용하면 좋은 것이 바로 Evaluate Expressions이다.
디버그 도중 아래 아이콘을 클릭하면 사용할 수 있다.
아래와 같은 창이 생기는데, 이곳에 자유롭게 코드를 입력해 현재 진행 상황을 보다 세밀하게 파악할 수 있다.
여기서는 DB에 값들이 잘 save 되었는지 확인하기 위해 조회 로직을 작성하였더니 3개의 Product가 잘 저장된 것을 확인 할 수 있었다.
Watch
맥: 없음
윈도우: 없음
디버그에서는 각 상황에 따른 변수를 확인할 수 있다는 것이 장점이다.
watch는 현재 표시되어 있는 변수 이외에 내가 확인하고 싶은 변수를 추가하는 기능이다.
왼쪽 '+' 버튼을 누르면 이렇게 원하는 변수를 추가할 수 있고, Step over 등을 하면서 어떻게 변화하는지 확인할 수 있다.
'java > intelliJ' 카테고리의 다른 글
[Intellij] 파일이 있는데, No such file or directory 에러 (0) | 2021.09.08 |
---|---|
[Intellij] 환경 변수 등록 (2) | 2021.07.21 |
[Intellij] import문 자동 정리하기 (1) | 2021.07.13 |
[Intellij] JUnit5 Stateful Test (0) | 2021.07.05 |
[Intellij] 인텔리제이 단축키, 템플릿 정리 - Mac (2) | 2021.06.24 |