Chapter 28: 디버깅 - 버그 찾고 해결하기¶
🎯 이 장에서 배우는 것¶
- [ ] 오류 메시지를 읽고 원인을 파악할 수 있다
- [ ] print()로 버그를 찾아 해결할 수 있다
⏱️ 예상 학습 시간: 약 15분
📚 핵심 개념¶
개념: 디버깅(Debugging)¶
비유로 시작할게요!
디버깅은 의사가 환자를 진찰하는 것과 같아요. 증상(오류 메시지)을 보고, 원인을 찾아, 치료(수정)하는 과정이죠! 🩺
정확한 정의:
💡 디버깅 = 코드에서 버그(오류)를 찾아 고치는 과정
자주 만나는 오류 3가지:
| 오류 이름 | 의미 | 예시 |
|---|---|---|
SyntaxError |
문법 오류 | print("안녕" ← 괄호 빠짐 |
NameError |
없는 이름 | print(naem) ← 오타 |
TypeError |
타입 오류 | "나이: " + 20 ← 숫자+문자 |
🔨 따라하기¶
Step 1: 오류 메시지 읽기¶
버그가 있는 코드:
name = "철수"
print(naem) # 오타!
오류 메시지:
NameError: name 'naem' is not defined
↑
"naem이 정의 안 됨" = 오타!
💡 핵심: 오류 메시지가 줄 번호와 원인을 알려줘요!
Step 2: print()로 디버깅하기¶
문제 있는 코드:
total = 0
for i in range(5):
total = i # 버그: += 해야 함!
print(total) # 예상: 10, 실제: 4
print()로 중간값 확인:
total = 0
for i in range(5):
total = i
print(f"i={i}, total={total}") # 👈 추가!
print(total)
실행 결과:
i=0, total=0
i=1, total=1
i=2, total=2
i=3, total=3
i=4, total=4
4
🔍 발견! total이 누적 안 되고 덮어쓰기 됨 →
total += i로 수정!
📝 전체 코드 (수정 완료)¶
# 수정된 올바른 코드
total = 0
for i in range(5):
total += i # ✅ 수정: = → +=
print(total) # 결과: 10
⚠️ 주의할 점¶
디버깅 3단계 기억하세요:
flowchart LR
A["1️⃣ 오류 메시지<br>읽기"] --> B["2️⃣ print()로<br>값 확인"] --> C["3️⃣ 원인 찾아<br>수정"]
style A fill:#ffebee
style B fill:#fff3e0
style C fill:#e8f5e9
✅ 점검하기¶
- NameError가 나타났다면 무엇을 확인해야 할까요?
정답 확인
변수명에 오타가 없는지, 변수를 먼저 정의했는지 확인해요!- print() 디버깅은 언제 사용하나요?
정답 확인
코드가 실행되지만 결과가 예상과 다를 때, 중간값을 확인하려고 사용해요!🔗 다음 장 미리보기¶
오류를 잘 처리하게 되었네요! 👏 다음 장에서는 모듈 가져오기로 파이썬의 강력한 기능들을 활용해볼 거예요!