IntelliJ에서 디버깅 루틴 정리 – Breakpoint 설정부터 Watch, Evaluate까지
개발을 하다 보면 디버깅은 피할 수 없는 과정입니다. 특히 팀 개발 환경에서는 단순한 로그 확인만으로는 버그의 원인을 찾기 어려운 경우가 많습니다. 이럴 때 제대로 된 디버깅 루틴을 갖추고 있다면 문제 해결 속도는 확연히 달라집니다. 이번 글에서는 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할 때는 의도하지 않은 경로로 깊이 들어갈 수 있으므로 주의가 필요합니다.
실무 팁: 루틴화된 디버깅 순서 만들기
아래는 실무에서 흔히 사용하는 디버깅 루틴입니다:
- 문제 위치 파악 후 해당 지점에 Breakpoint 설정
- Variables 확인으로 현재 상태 점검
- 필요 시 Watch에 추적 변수 등록
- Evaluate Expression으로 조건 확인 및 결과 미리 보기
- Step Over와 Step Into로 흐름 분석
- 조건 만족 시 Hit Count 또는 조건부 Breakpoint로 반복 조건 최적화
이러한 디버깅 루틴을 몸에 익히면 단순 버그뿐 아니라 복잡한 로직 오류나 데이터 흐름 문제도 빠르게 추적할 수 있습니다. 특히 신규 개발자가 기존 코드에 적응할 때 디버깅은 최고의 학습 도구이기도 합니다.
코드를 잘 짜는 것만큼, 잘 디버깅하는 것도 실력입니다. IntelliJ는 강력한 디버깅 도구를 제공하므로, 단순한 중단점 설정을 넘어서 다양한 기능을 습관처럼 사용하는 것이 중요합니다.
여러분의 디버깅 루틴에는 어떤 도구가 포함되어 있나요? 지금 사용하는 방식과 비교해보고 개선할 수 있는 부분을 하나씩 늘려보세요.
#디버깅 #IntelliJ #Breakpoint #Evaluate #Watch #코딩실무 #개발팁