[파이썬] pdb 현재 스택 프레임 확인하기

디버깅은 개발 과정에서 중요한 단계입니다. 코드에 오류가 있을 때 이를 해결하기 위해 실행 중인 프로그램의 상태를 분석하고 이해하는 것은 매우 중요합니다. Python에서는 내장된 디버깅 도구인 pdb를 사용하여 코드를 디버깅할 수 있습니다.

pdb는 코드의 특정 지점에서 일시적으로 실행을 멈추고, 이때 스택 프레임, 변수 및 실행 컨텍스트에 대한 정보를 제공합니다. 이를 통해 현재 실행 중인 함수나 메서드의 상태를 확인하고, 호출된 함수들의 호출 스택을 추적할 수 있습니다.

이번 블로그 포스트에서는 pdb를 사용하여 현재 스택 프레임을 확인하는 방법에 대해 알아보겠습니다.

pdb 모듈 설치하기

pdb는 Python의 표준 라이브러리에 포함되어 있으므로 별도의 설치가 필요하지 않습니다. Python 2.x 버전에서는 pdb가 기본으로 설치되어 있으며, Python 3.x 버전에서는 추가 설치가 필요하지 않습니다.

코드에 디버깅 지점 설정하기

pdb를 사용하여 코드를 디버깅하기 위해서는 디버깅할 부분에 중단점을 설정해야 합니다. 일반적으로는 import pdb; pdb.set_trace()라는 코드를 디버깅 지점에 추가합니다. 이 코드를 실행하면 프로그램이 실행되다가 디버깅 지점에서 일시적으로 멈춥니다.

import pdb

def my_function():
    # 디버깅 지점 설정
    pdb.set_trace()
    
    # 디버깅할 코드 작성
    ...

# 함수 호출
my_function()

디버깅 도구 사용하기

디버깅 도구가 실행되면, pdb의 REPL(Read-Eval-Print Loop) 모드가 활성화됩니다. 디버깅 도구는 현재 실행 중인 위치와 함께 스택 프레임의 정보를 표시합니다. 이제 다음과 같은 명령어를 사용하여 디버깅을 수행할 수 있습니다.

현재 스택 프레임 확인하기

디버거가 실행 중인 상태에서 where 명령어를 사용하면 현재 스택 프레임을 출력할 수 있습니다. 이를 통해 현재 함수의 이름과 해당 함수를 호출한 함수들의 호출 스택을 확인할 수 있습니다.

-> my_function()

(Pdb) where
  /path/to/your/script.py(5)<module>()
-> my_function()
  /path/to/your/script.py(3)my_function()
-> pdb.set_trace()

(Pdb) 

where 명령어는 현재 위치를 표시하고, 호출된 함수들의 정보를 제공합니다.

결론

pdb를 사용하여 Python 코드를 디버깅하는 방법을 알아보았습니다. pdb는 프로그램 실행 중 상태를 분석하고 이해하는 데 도움이 되는 강력한 도구입니다. 현재 스택 프레임을 확인하고 호출 스택을 추적함으로써 코드의 실행 흐름을 이해할 수 있습니다. 이를 통해 오류를 신속하게 해결하고 더 효율적인 프로그래밍을 할 수 있습니다.