데이터 과학 커리어 (feat. 경제학)

import pdb 파이썬 디버거 모듈

마빈 Marvin 2024. 6. 17. 05:14

 

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 인터랙티브 모드에 들어갑니다. 여기에서 변수를 검사하고, 코드를 단계별로 실행하며, 기타 디버깅 작업을 수행할 수 있습니다.

 


 

이 용어 말고도 몰랐던 내용을 하나씩 메모해서 정리해둬야겠다.