Develop/etc

[IntelliJ] 편하게 디버깅하기

연로그 2022. 6. 18. 02:07
반응형

😊 서론

 

 원래는 System.out.println()을 찍어가며 디버깅을 했었다. 좋지 않은 습관임은 알았지만 다른 공부할게 너무 많아서 우선순위가 뒤로 밀려났다. 이전 미션에서 페어 프로그래밍을 진행하며 페어인 호호가 몇 가지 팁을 가르쳐줬는데 그렇게 편할수가 없었다. 나같은 디버깅 초보자들을 위해 IntelliJ의 디버깅 기능을 소개해보려고 한다.🤭

 

현재 작성자는 Windows 사용자 입니다. Mac의 단축키가 불일치하는 경우 댓글로 알려주시면 감사합니다 ~ 

이 글은 IntelliJ 2021.2.3 버전을 기준으로 작성하였습니다.

 


🤗 유용한 단축키

 

👉 파일 검색

  • Windows: ctrl + shift + N
  • Mac: ⌘ + ⇧ + O

 

👉 코드 검색

  • Windows: ctrl + shift + F
  • Mac: ⌘ + ⇧ + F

 

👉 최근에 열었던 파일 목록

  • Windows: Ctrl + E
  • Mac: + E

 

 


😎 디버깅 하기

 

📌 break point 잡기

  • 라인 넘버와 코드 사이의 여백을 클릭해 break point를 생성할 수 있다.
  • break point는 debug 모드로 실행 시 해당 라인에서 멈추게 된다.
  • break point를 우클릭하면 멈춤 조건을 지정할 수 있다.

 

👾 debug 모드로 실행하기

  • 벌레 모양 버튼 클릭 (이미지 참고)
  • Windows: alt + shift + F9
  • Mac: ⌥ + ⇧  + F9

 

🧪 debugging

 

  •  resume 
    • 다음 break point로 이동
    • Windows: F9
    • Mac: ⌥ + ⌘ + R

 

  •  step over 
    • 현재 break된 파일의 다음 라인 이동
    • Windows / Mac: F8

 

  •  step into 
    • 현재 break된 라인에서 실행 중인 라인으로 이동
    • Windows / Mac: F7
    • ex) UserService의 userDao.save() 라인
      -> step into
      -> UserDao의 save() 메서드로 이동

 

  •  force step into  
    • stepping에 설정된 클래스/메서드 과정은 스킵하지 않고 현재 break된 라인에서 실행 중인 라인으로 이동
      (step into는 스킵한다)
    • Windows: alt + shift + F7
    • Mac: ⌥ + ⌘ + F7

settings의 stepping에서 설정 변경 가능

 

  •  step out 
    • 현재 break된 라인에서 호출한 곳으로 이동
    • Windows: shift + F8
    • Mac: ⇧ + F8
    • ex: UserService의 userDao.save() 라인
      -> step into
      -> UserDao의 save() 메서드로 이동
      -> step out
      -> UserService의 userDao.save() 라인으로 돌아옴
      (= step into를 통해 타 클래스의 메서드를 살펴보고 있을때, step out을 통해 해당 메서드를 호출했었던 원래 위치로 돌아올 수 있음)

 

  •  drop frame 
    • step out와 동일한 기능
    • step out처럼 원래 위치로 돌아오지만 step out은 해당 라인을 실행한 후, drop frame은 해당 라인을 실행하기 전으로 돌아옴

 

  •  run to cursor 
    • 포커스 되어있는 라인으로 이동
    • Windows: alt + F9
    • Mac: ⌥ + F9

 

  •  evaluate 
    • 현재 위치에서 코드 실행 (하단의 이미지 참고)
    • Windows: alt + F8
    • Mac: ⌥ + F8

실행 시점 이전의 변수를 자유롭게 사용할 수 있다.
메서드도 자유롭게 호출할 수 있다.

 

💻 디버깅 창 살펴보기

 

반응형