디버깅을 위한 Python pdb 사용 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- Python 프로그래머 및 디버깅 초보자
- 중간 수준의 프로그래밍 지식 보유자
핵심 요약
pdb
는 Python의 내장 디버거로,pdb.set_trace()
를 통해 브레이크포인트 설정, 변수 값 확인, 코드 실행 흐름 제어 가능n
(next),s
(step),c
(continue) 등 명령어로 단계별 디버깅 수행- 조건부 브레이크포인트 및 포스트모르타임 디버깅(post-mortem debugging) 등 고급 기능 지원
섹션별 세부 요약
1. **pdb의 정의**
pdb
(Python Debugger)는 Python 프로그램의 소스 코드를 인터랙티브로 디버깅할 수 있는 도구- 브레이크포인트 설정, 코드 실행 흐름 제어, 변수 값 확인 등의 기능 제공
2. **pdb 사용 이유**
- 코드 내 오류 추적 및 변수 값 확인이 용이함
- 외부 도구 없이 Python 내장 기능으로 디버깅 가능
- 프로그램 로직 흐름의 시각화 및 제어 가능
3. **pdb 샘플 코드**
pdb.set_trace()
를 통해 브레이크포인트 설정x
,y
등의 변수 값 확인 가능add(x, y)
,subtract(x, y)
함수 호출 및 결과 출력
4. **브레이크포인트 설정**
import pdb; pdb.set_trace()
문을 삽입하여 실행 중단- 코드 실행 흐름을 중단하고 현재 상태를 인터랙티브로 조사 가능
5. **변수 확인**
- 브레이크포인트 도달 시,
pdb
프롬프트에서 변수 이름 입력하여 값 확인 - 예:
x
,y
등의 변수 값 확인
6. **제어 명령어**
n
(next): 다음 줄 실행c
(continue): 다음 브레이크포인트까지 실행s
(step): 함수 내부로 진입l
(list): 현재 줄 주변 소스 코드 표시b
(break): 특정 줄에 브레이크포인트 설정q
(quit): 디버거 종료
7. **고급 기능**
- 조건부 브레이크포인트:
b [lineno], condition
명령어로 조건에 따라 실행 중단 - 포스트모르타임 디버깅:
pdb.pm()
을 통해 프로그램 충돌 후 에러 상태 확인 - 호출 스택 확인:
where
명령어로 에러 발생 위치 파악
8. **프로그램 실행 방법**
- 터미널에서
python filename.py
명령어로 실행 - 브레이크포인트 도달 시
pdb
인터랙티브 모드 진입
9. **최고의 실천 방법**
- 브레이크포인트를 전략적으로 배치하여 실행 방해 최소화
- 조건부 브레이크포인트 사용으로 디버거 중단 시점 제어
- 코드 로직에 영향을 주는 변수 값을 정기적으로 확인
10. **마무리**
pdb
의 고급 기능을 익히면 디버깅 효율성 향상 가능
결론
pdb
를 사용하여 디버깅 시,pdb.set_trace()
를 통해 브레이크포인트 설정하고,n
,s
,c
명령어로 실행 흐름 제어- 조건부 브레이크포인트와 포스트모르타임 디버깅 기능을 활용하여 복잡한 오류 해결 가능
- 디버깅 시 변수 값 및 실행 흐름을 정기적으로 확인하여 코드 로직 오류를 사전에 방지해야 함