안녕하세요, 여러분의 든든한 IT 길잡이 데브프리입니다.
코딩을 하다 보면 내 생각대로 값이 안 나오고 에러가 터질 때가 있습니다. 이때 많은 초보 개발자분들이 소스 코드 사이사이에 이런 코드를 끼워 넣곤 합니다.
Java
System.out.println("여기 지나감 1111");
System.out.println("현재 유저 아이디: " + userId);
System.out.println("여기까지 오면 DB 저장 성공 2222");
로그를 확인하고 나서 코드를 지우는 걸 깜빡하는 바람에, 실서버에 "여기 지나감 1111"이 출력되는 흑역사를 생성하기도 하죠. 게다가 값을 하나 확인할 때마다 코드를 수정하고 스프링 부트 서버를 껐다가 다시 켜는 데 걸리는 시간(수십 초)을 합치면 하루에만 엄청난 시간을 낭비하게 됩니다.
"그럼 코드를 안 고치고 에러를 어떻게 찾아요?"
이럴 때 여러분을 구원해 줄 궁극의 무기가 바로 인텔리제이(IntelliJ)에 기본 탑재된 '디버거(Debugger)'입니다. 오늘은 내 코드의 속을 훤히 들여다보는 디버깅 모드의 핵심 사용법을 '엑스레이와 시간 정지 리모컨'에 비유하여 완벽하게 마스터해 드리겠습니다!
1. 디버거(Debugger)란 무엇인가요? (코드 엑스레이)
디버거는 실행 중인 프로그램의 시간을 내 마음대로 멈추고, 그 순간 메모리에 들어있는 모든 변수의 값을 엑스레이처럼 투시해서 볼 수 있게 해주는 도구입니다.

- 사진 내용: 최첨단 의료용 엑스레이 스캐너가 복잡하고 얽힌 빛나는 데이터 큐브(코드)의 단면을 스캔하자, 안쪽에 숨겨져 있던 변수들의 정확한 숫자와 텍스트(데이터)가 선명한 파란색 홀로그램으로 나타나는 일러스트.
- 이미지 Alt 태그: 인텔리제이 디버거 디버깅 엑스레이 비유
- 이미지 캡션: 디버거를 사용하면 코드를 직접 수정하며 출력(Print)해 볼 필요 없이, 현재 프로그램의 상태를 엑스레이처럼 투명하게 들여다볼 수 있습니다.
일반적인 실행(Run, ▶️)은 코드가 1번 줄부터 100번 줄까지 빛의 속도로 지나가 버립니다. 하지만 벌레 모양의 디버그(Debug, 🐞) 버튼으로 실행하면, 내가 원하는 특정 줄에서 프로그램의 시간을 딱! 멈출 수 있습니다.
시간이 멈춘 상태에서는 현재 userId에 어떤 값이 들어있는지, DB에서 데이터를 제대로 꺼내왔는지 마우스만 올려도 전부 확인할 수 있습니다.
2. 시간 정지의 마법! 브레이크포인트(Breakpoint) 찍기
디버거를 사용하기 위한 첫걸음은 "어디서 시간을 멈출 것인가?"를 지정하는 것입니다. 이것을 브레이크포인트(중단점)라고 부릅니다.

[사용 방법]
- 에러가 날 것 같이 의심스러운 코드의 왼쪽 숫자 줄 번호 옆의 빈 공간을 마우스로 클릭합니다.
- 동그란 빨간 점(🔴)이 생깁니다.
- 이제 우측 상단의 초록색 재생 버튼(▶️) 대신, 그 옆에 있는 벌레 모양 버튼(🐞 Debug)을 눌러 서버를 켭니다.
- 포스트맨이나 브라우저로 해당 API를 호출하면, 인텔리제이가 번쩍이며 코드가 빨간 점 위치에서 딱 멈춥니다! (이 줄은 아직 실행되기 직전 상태입니다.)
3. 리모컨 조작법: 멈춘 시간을 내 마음대로 컨트롤하기
시간을 멈췄다면 이제 리모컨(단축키)을 이용해 코드를 한 줄 한 줄 느린 화면으로 재생해 볼 차례입니다. 딱 3가지 단축키만 외우시면 됩니다.
① Step Over (F8): 한 줄씩 부드럽게 넘어가기
- 기능: 현재 멈춰있는 코드에서 바로 다음 줄로 넘어갑니다.
- 특징: 만약 현재 줄에 함수(메서드)가 있어도, 그 함수 안쪽으로 파고들어 가지 않고 겉핥기식으로 결과만 딱 실행한 뒤 다음 줄로 넘어갑니다. 가장 많이 쓰는 버튼입니다.
② Step Into (F7): 깊숙이 파고들기
- 기능: 현재 줄에 있는 메서드(함수) 안쪽으로 직접 진입합니다.
- 특징: 내가 만든 saveUser() 같은 메서드가 도대체 내부에서 어떻게 돌아가는지 디테일하게 추적하고 싶을 때 사용합니다. (주의: 스프링 프레임워크 자체 코드로 너무 깊게 빠졌다면 Shift + F8을 눌러 다시 빠져나올 수 있습니다.)
③ Resume (F9): 다음 빨간 점까지 재생하기
- 기능: 일시 정지를 풀고 다시 원래 속도로 쾌속 재생(▶️)합니다.
- 특징: 만약 코드 밑에 또 다른 빨간 점(브레이크포인트)을 찍어두었다면 그곳에서 다시 멈춥니다. 더 이상 빨간 점이 없다면 프로그램은 정상적으로 끝까지 실행됩니다.
💡 [데브프리의 실무 꿀팁: for문 1만 번 돌릴 때 유용한 '조건부 시간 정지!']
"데이터 1만 개를 반복문으로 돌리는데, 5,000번째 유저에서만 에러가 나요! 그럼 F9(Resume)를 5,000번 눌러야 하나요?"
절대 아닙니다! 인텔리제이에는 아주 스마트한 기능이 있습니다. 찍어둔 빨간 점(브레이크포인트)을 마우스 우클릭해 보세요. 'Condition(조건)'이라는 빈칸이 나옵니다.
이곳에 user.getId() == 5000 이라고 적어두고 디버거를 실행하면, 1번부터 4,999번까지는 빛의 속도로 무시하고 지나가다가 정확히 5,000번째 유저를 처리할 때만 마법처럼 시간이 딱! 멈춥니다. 반복문 디버깅의 핵심인 이 '조건부 브레이크포인트' 기능을 꼭 활용해 보세요!
4. [비밀 무기] Evaluate Expression (계산기 기능)
디버깅 중에 변수에 마우스를 올리면 값이 보이는 것은 다들 아시지만, 'Evaluate Expression(수식 계산기)' 기능을 모르는 초보자분들이 정말 많습니다.

코드가 멈춰있는 상태에서 단축키 Alt + F8 (또는 우클릭 -> Evaluate Expression)을 눌러보세요. 빈 입력창이 하나 뜹니다.
이곳은 현재 멈춰있는 시간 속에서 내 마음대로 코드를 테스트해 볼 수 있는 '마법의 계산기'입니다.
- user.getName()을 직접 쳐보고 엔터를 누르면 현재 유저의 이름이 튀어나옵니다.
- password.length() > 5 같은 조건식을 치면 true인지 false인지 즉시 알려줍니다.
- 심지어 user.setName("임시테스트")처럼 데이터베이스에 들어가기 직전에 내 마음대로 변수 값을 조작해서 뒷부분의 코드가 어떻게 반응하는지 테스트해 볼 수도 있습니다!
5. 한눈에 보는 디버거 핵심 단축키 요약표
| 단축키 (Windows) | 단축키 (Mac) | 영문 기능명 | 나의 행동 비유 |
| 클릭 | 클릭 | Toggle Breakpoint | 🔴 "여기서 시간 멈춰!" (정지선 긋기) |
| F8 | F8 | Step Over | ⏩ "자, 다음 줄로 넘어가자" (겉핥기) |
| F7 | F7 | Step Into | 🔍 "이 함수 안에서 뭔 일이 일어나는지 보자" (파고들기) |
| F9 | Cmd + Option + R | Resume | ▶️ "다 확인했어! 다음 빨간 점까지 그냥 쭉 재생해" |
| Alt + F8 | Option + F8 | Evaluate Expression | 🧮 "멈춘 상태에서 이 조건식 한 번 계산해 봐" |
마무리
코딩 실력은 에러가 났을 때 그 에러를 얼마나 빠르고 정확하게 찾아내어 고치느냐에 달려 있습니다.
매번 System.out.println()을 수십 개씩 적고 서버를 재시작하던 과거에서 벗어나세요. 코드의 좌측 여백에 무심하게 빨간 점 하나를 찍고 디버그(🐞) 버튼을 누르는 순간, 보이지 않던 수많은 데이터의 흐름이 여러분의 눈앞에 투명하게 펼쳐질 것입니다.
오늘부터는 버그가 발생하면 당황하지 말고, 가장 먼저 코드에 '빨간 점'을 찍어보시길 바랍니다.
오늘의 데브 노트가 유익하셨다면 공감과 댓글 부탁드립니다. 다음 시간에도 유용한 개발 도구 꿀팁으로 찾아오겠습니다. 지금까지 데브프리였습니다. 감사합니다!
'🛠️ IT 실전 가이드 (SW 도구)' 카테고리의 다른 글
| 무한 리밸런싱의 늪! 카프카(Kafka) 컨슈머 에러 원인과 DLQ 구축 가이드 (0) | 2026.07.31 |
|---|---|
| Redis OOM 에러 피하려면 필수! 캐시 메모리 최적화와 maxmemory-policy 완벽 가이드 (0) | 2026.07.30 |
| 내 서버는 몇 명까지 버틸까? 'JMeter' 부하 테스트 3분 완벽 가이드 (놀이공원 비유) (0) | 2026.07.28 |
| 검은 터미널 창의 공포는 그만! 마우스로 끝내는 Git GUI 'SourceTree' 완벽 가이드 (0) | 2026.07.09 |
| 내 컴퓨터(localhost)를 전 세계에 공개하는 1초 마법! Ngrok 완벽 가이드 (0) | 2026.07.08 |