pdb는 파이썬 코드를 디버깅할 때 사용하는 모듈이다.
이 모듈을 사용하면 중단점(breakpoint) 설정, 소스 리스팅, 변수 치환, 콜 스택 검사 등의 다양한 기능을 사용할 수 있다.
특히나 머신러닝과 같이 피쳐 사이즈에 민감한 개발의 경우 python debugger가 매우 큰 도움이 될 수 있다.
파이썬 디버거 예제
pdb 모듈은 파이썬 표준 라이브러리의 일부이기 때문에 별도 설치가 필요없다. Python 디버깅 모듈을 사용하면 매 순간 변수값을 알아낼 수 있고, 직접 trace를 볼 수도 있다.
import pdb
x=0
while True:
x+=1
print ("Current number:", x)
pdb.set_trace()
파이썬 3.7 버전 이후부터는 기존의 pdb.set_trace() 대신에 새로운 내장 기능인 breakpoint()를 사용할 수 있다. breakpoint()를 실행하면 pdb가 자동으로 호출한다.
x=0
while True:
x+=1
print ("Current number:", x)
breakpoint()
이처럼 디버깅이 필요한 부분에 pdp를 넣고 실행시키면, 코드 프로세스가 진행되다가 특정 브레이크 포인트에서 중단 후 쉘로 커맨드를 입력받게끔 동작하게 된다.
예시
아래의 코드는 제로 디비전 에러가 발생하게 된다. 이때 해당 코드를 디버깅하고 싶다면 아래 커맨드를 통해 손 쉽게 디버깅을 진행할 수 있다.
python -m pdb {파일명}.py
a = 20
b = 10
s = 0
for i in range(a):
s += a / b
b -= 1
자주 사용하는 커맨드 모음
PDB 명령어 | 실행내용 |
help | 도움말 |
next | 다음 문장으로 이동 |
변수값 화면에 표시 | |
list | 소스코드 리스트 출력. 현재 위치 화살표로 표시됨 |
where | 콜스택 출력 |
continue | 계속 실행. 다음 중단점에 멈추거나 중단점 없으면 끝까지 실행 |
step | Step Into 하여 함수 내부로 들어감 |
return | 현재 함수의 리턴 직전까지 실행 |
!변수명 = 값 | 변수에 값 재설정 |
1. Python Debugger – Python pdb
2. Python 디버깅 (PDB) - 예제로 배우는 Python 프로그래밍
'개발 > ETC' 카테고리의 다른 글
[Linux] sed 명령어로 여러개의 파일 문자열 변경하기 (0) | 2024.04.22 |
---|---|
[python] 표준 입출력 sys.stdout / sys.stderr? (0) | 2023.01.22 |
싱글스레드 리더십과 팀 (0) | 2022.12.28 |
[python] 문자열 _ n-size 나누기 (0) | 2022.03.05 |
[python] zsh: command not found: conda 에러 해결 (0) | 2022.02.06 |