개발 환경 & 팁 모음

IntelliJ에서 디버깅 루틴 정리 – Breakpoint 설정부터 Watch, Evaluate까지

heoncode 2025. 5. 11. 13:32
728x90
반응형
SMALL

개발을 하다 보면 디버깅은 피할 수 없는 과정입니다. 특히 팀 개발 환경에서는 단순한 로그 확인만으로는 버그의 원인을 찾기 어려운 경우가 많습니다. 이럴 때 제대로 된 디버깅 루틴을 갖추고 있다면 문제 해결 속도는 확연히 달라집니다. 이번 글에서는 IntelliJ를 사용하는 실무 개발자를 위한 디버깅 루틴을 소개합니다. Breakpoint 설정부터 Watch, Evaluate까지의 전 과정을 단계적으로 정리합니다.

1. Breakpoint 제대로 설정하기

IntelliJ에서 디버깅의 시작은 Breakpoint입니다. 단순히 코드 한 줄에 멈추는 것 이상으로 다양한 설정이 가능합니다.

  • 조건부 Breakpoint: 특정 조건이 만족될 때만 멈추도록 할 수 있습니다.
    예) if (user.id == 1001)일 때만 중단.
  • Hit Count 설정: 몇 번째 실행에서 멈출지 지정할 수 있습니다.
  • Logging Breakpoint: 실제 중단하지 않고 변수 값만 로그로 출력할 수도 있습니다.

실제로 조건부 Breakpoint는 루프 내 특정 조건을 디버깅할 때 매우 유용합니다.

2. Variables 창으로 흐름 읽기

디버깅 중 브레이크포인트에 멈췄을 때 가장 먼저 확인해야 할 곳은 Variables 창입니다. 현재 컨텍스트에서 사용 가능한 변수들의 상태를 직관적으로 확인할 수 있습니다.

팁: 객체가 복잡할 경우 드릴다운으로 내부 구조를 단계별로 확인하세요. 컬렉션, 맵 형태일 경우 .size()도 바로 확인 가능합니다.

3. Watch로 관심 변수 고정 추적

실시간으로 계속 관찰하고 싶은 값은 Watch 영역에 등록해 두면 편리합니다. 예를 들어, 디버깅 중 특정 객체의 상태나 계산식 결과를 반복해서 보고 싶을 때 Watch가 유용합니다.

Watch에는 단순 변수뿐 아니라 user.getProfile().isAdmin() 같은 표현식도 등록할 수 있습니다. 변경 추적이 필요한 값이 있다면 반드시 Watch에 올려서 확인하는 습관을 들이세요.

4. Evaluate Expression으로 실시간 코드 실행

Evaluate Expression 기능은 디버깅 도중 코드를 직접 실행해볼 수 있는 강력한 기능입니다.

예를 들어, 현재 객체에서 어떤 메서드가 어떤 값을 반환할지 바로 확인하고 싶다면 이 기능이 유용합니다. 특정 로직을 거치지 않고, 바로 반환값만 확인하고 싶을 때 특히 편리합니다.

주의: 상태를 변경하는 코드를 Evaluate에서 실행할 경우 예상치 못한 흐름 변경이 생길 수 있으므로, 읽기 전용 목적으로 사용하는 것을 권장합니다.

5. Step Over / Step Into / Step Out 명확히 구분하기

  • Step Over (F8): 현재 줄을 실행하고 다음 줄로 이동.
  • Step Into (F7): 현재 줄에서 호출되는 메서드 내부로 진입.
  • Step Out (Shift+F8): 현재 메서드 실행을 마치고 호출한 곳으로 복귀.

이 세 가지를 상황에 따라 잘 구분해서 사용하면 디버깅 속도가 향상됩니다. 특히 라이브러리 내부 코드를 Step Into할 때는 의도하지 않은 경로로 깊이 들어갈 수 있으므로 주의가 필요합니다.

실무 팁: 루틴화된 디버깅 순서 만들기

아래는 실무에서 흔히 사용하는 디버깅 루틴입니다:

  1. 문제 위치 파악 후 해당 지점에 Breakpoint 설정
  2. Variables 확인으로 현재 상태 점검
  3. 필요 시 Watch에 추적 변수 등록
  4. Evaluate Expression으로 조건 확인 및 결과 미리 보기
  5. Step Over와 Step Into로 흐름 분석
  6. 조건 만족 시 Hit Count 또는 조건부 Breakpoint로 반복 조건 최적화

이러한 디버깅 루틴을 몸에 익히면 단순 버그뿐 아니라 복잡한 로직 오류나 데이터 흐름 문제도 빠르게 추적할 수 있습니다. 특히 신규 개발자가 기존 코드에 적응할 때 디버깅은 최고의 학습 도구이기도 합니다.


코드를 잘 짜는 것만큼, 잘 디버깅하는 것도 실력입니다. IntelliJ는 강력한 디버깅 도구를 제공하므로, 단순한 중단점 설정을 넘어서 다양한 기능을 습관처럼 사용하는 것이 중요합니다.

여러분의 디버깅 루틴에는 어떤 도구가 포함되어 있나요? 지금 사용하는 방식과 비교해보고 개선할 수 있는 부분을 하나씩 늘려보세요.

#디버깅 #IntelliJ #Breakpoint #Evaluate #Watch #코딩실무 #개발팁

728x90
반응형
LIST