개발/ETC

[Python] 디버깅 모듈 pdb

wonpick 2023. 5. 21. 17:28

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 다음 문장으로 이동
print 변수값 화면에 표시
list 소스코드 리스트 출력. 현재 위치 화살표로 표시됨
where 콜스택 출력
continue 계속 실행. 다음 중단점에 멈추거나 중단점 없으면 끝까지 실행
step Step Into 하여 함수 내부로 들어감
return 현재 함수의 리턴 직전까지 실행
!변수명 = 값 변수에 값 재설정

1.  Python Debugger – Python pdb
2. Python 디버깅 (PDB) - 예제로 배우는 Python 프로그래밍