02. 디버깅 (문제 해결의 기술)
"모든 코드는 버그가 있습니다. 개발자는 코드를 짜는 시간보다 고치는 시간을 더 많이 씁니다. 에러 메시지는 컴퓨터가 어디가 아픈지 말해주는 러브레터입니다."
1. 에러 해부학 (Traceback 읽는 법)
빨간 글씨가 화면을 덮어도 당황하지 마세요. Traceback(에러 추적) 메시지에는 규칙이 있습니다. 시선을 아래로 향하세요.
graph TD
Step1["🚨 에러 발생!"] --> Step2["맨 마지막 줄 읽기<br>NameError: name 'a' is not defined"]
Step2 --> Step3["맨 윗줄 파일명 확인<br>File 'main.py'"]
Step3 --> Step4["몇 번째 줄인지 확인<br>line 10"]
Step4 --> Step5["🔍 해당 줄로 이동해서 수정"]
style Step2 fill:#ffebee,stroke:#c62828,stroke-width:2px
style Step5 fill:#e8f5e9,stroke:#2e7d32
자주 보는 에러 3대장
| 에러 이름 | 의미 | 힌트 |
|---|---|---|
NameError |
"그런 이름표 없는데요?" | 오타 확인, 변수 선언했는지 확인 |
TypeError |
"타입이 안 맞아요" | 숫자 + 문자 더하기 했나? |
IndentationError |
"줄 맞춤이 엉망이에요" | 들여쓰기(Tab/Space) 확인 |
SyntaxError |
"문법이 틀렸어요" | 콜론(:)이나 괄호() 빠뜨렸나? |
2. 디버깅 3원칙 (탐정 놀이)
1) 프린트 찍어보기 (print debugging)
의심스러운 곳 앞뒤에 CCTV를 설치하듯 print를 심어둡니다.
💡 꿀팁: f-string 디버깅 (=)
변수 이름과 값을 동시에 보고 싶다면 =을 붙이세요. (파이썬 3.8+)
2) 작게 쪼개기 (Divide and Conquer)
100줄을 한 번에 실행하고 "안 돼요"라고 하면 신도 모릅니다. 10줄씩 잘라서 실행해보며 "여기까진 잘 되네?"를 확인하며 범위를 좁히세요.
3) AI에게 물어보기 (닥터 왓슨)
에러 메시지를 통째로 복사해서 AI에게 주면, 99.9% 확률로 해결책을 줍니다.
"이거 왜 안돼요?"라고 묻기 전에, "에러 메시지가 뭐라고 하니?"라고 스스로에게 물어보는 습관을 들이세요.
3. 구글링(Googling) vs AI 질문법
과거에는 에러 메시지를 구글에 쳐서 Stack Overflow를 뒤져야 했습니다. 지금은 AI가 더 친절하게 알려줍니다.