danuri
오늘의 기록
danuri
전체 방문자
오늘
어제
  • 오늘의 기록 (307)
    • java (150)
      • java (33)
      • spring (63)
      • jpa (36)
      • querydsl (7)
      • intelliJ (9)
    • kotlin (8)
    • python (24)
      • python (10)
      • data analysis (13)
      • crawling (1)
    • ddd (2)
    • chatgpt (2)
    • algorithm (33)
      • theory (9)
      • problems (23)
    • http (8)
    • git (8)
    • database (5)
    • aws (12)
    • devops (10)
      • docker (6)
      • cicd (4)
    • book (44)
      • clean code (9)
      • 도메인 주도 개발 시작하기 (10)
      • 자바 최적화 (11)
      • 마이크로서비스 패턴 (0)
      • 스프링으로 시작하는 리액티브 프로그래밍 (14)
    • tistory (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • RDS
  • JPA
  • nuribank
  • Bitmask
  • Spring
  • AWS
  • 자바 최적화
  • connection
  • Database
  • Thymeleaf
  • Jackson
  • Kotlin
  • DDD
  • 도메인 주도 설계
  • Saving Plans
  • reactive
  • Java
  • SWAGGER
  • mockito
  • 마이크로서비스패턴
  • PostgreSQL
  • gitlab
  • 등가속도 운동
  • ChatGPT
  • docker
  • POSTGIS
  • S3
  • Security
  • 트랜잭션
  • CICD

최근 댓글

최근 글

hELLO · Designed By 정상우.
danuri

오늘의 기록

[Intellij] 디버그
java/intelliJ

[Intellij] 디버그

2021. 7. 13. 17:13

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
    'java/intelliJ' 카테고리의 다른 글
    • [Intellij] 파일이 있는데, No such file or directory 에러
    • [Intellij] 환경 변수 등록
    • [Intellij] import문 자동 정리하기
    • [Intellij] JUnit5 Stateful Test
    danuri
    danuri
    IT 관련 정보(컴퓨터 지식, 개발)를 꾸준히 기록하는 블로그입니다.

    티스토리툴바