import pdb 파이썬 디버거 모듈
PyFixest 오픈 소스 프로젝트 관련, 어제 오픈소스 모임장인 알렉스랑 첫미팅을 했다. 환경설정이랑 코드 오버뷰였다. 나는 포아송 회귀식 (Poisson Regression) 관련 코드를 빠르게 하는 파트를 하기로 했다. 설명 중에 import pdb 가 디버깅할 때 요긴하게 사용된다고 하는데, 개념이 새로워서 공부 겸 ChatGPT 에게 물었던 내용을 메모해둔다.
(질문) import pdb 가 무엇이니?
(ChatGPT) import pdb는 Python 프로그램에서 디버깅을 하기 위해 Python Debugger (PDB) 모듈을 가져오는 데 사용되는 구문입니다. PDB 모듈은 인터랙티브 디버깅 환경을 제공하여 개발자가 브레이크포인트를 설정하고, 코드를 단계별로 실행하며, 변수를 검사하고, 표현식을 평가할 수 있게 해줍니다. 이는 Python 코드에서 버그를 찾고 수정하는 데 매우 유용한 도구입니다.
다음은 PDB의 주요 기능과 명령어에 대한 간략한 설명입니다
[1] 브레이크포인트 설정: 코드의 특정 라인에서 실행을 일시 중지하도록 브레이크포인트를 설정할 수 있습니다.
import pdb; pdb.set_trace()
또는 PDB 프롬프트에서 break 명령어를 사용할 수 있습니다:
(Pdb) break filename.py:line_number
[2] 코드 실행: PDB를 사용하여 스크립트를 실행하려면 명령 줄에 pdb를 추가합니다:
python -m pdb my_script.py
[3] 코드 단계별 실행:
- n (next): 현재 함수의 다음 라인까지 실행을 계속합니다.
- s (step): 현재 라인에서 호출된 함수로 들어갑니다.
- c (continue): 다음 브레이크포인트까지 실행을 계속합니다.
[4] 변수 검사:
- p variable_name: 지정된 변수의 값을 출력합니다.
- pp variable_name: 지정된 변수의 값을 보기 좋게 출력합니다.
- whatis variable_name: 지정된 변수의 타입을 출력합니다.
[5] 표현식 평가: PDB 프롬프트를 사용하여 모든 Python 표현식을 평가할 수 있습니다.
[6] 코드 목록 보기:
- l (list): 현재 라인 주변의 소스 코드를 표시합니다.
- ll (long list): 현재 함수 또는 프레임의 전체 소스 코드를 표시합니다.
[7] 디버거 종료: PDB를 종료하려면 다음 명령어를 사용합니다:
- q (quit): 디버거를 종료하고 프로그램을 종료합니다.
- exit(): 디버거를 종료합니다.
다음은 Python 스크립트에서 PDB를 사용하는 간단한 예제입니다:
def add(a, b):
result = a + b
return result
def main():
x = 5
y = 10
import pdb; pdb.set_trace() # 여기서 브레이크포인트를 설정합니다.
sum = add(x, y)
print(f"The sum is {sum}")
if __name__ == "__main__":
main()
이 스크립트를 실행하면 pdb.set_trace() 라인에서 실행이 일시 중지되고, PDB 인터랙티브 모드에 들어갑니다. 여기에서 변수를 검사하고, 코드를 단계별로 실행하며, 기타 디버깅 작업을 수행할 수 있습니다.
이 용어 말고도 몰랐던 내용을 하나씩 메모해서 정리해둬야겠다.