본문 바로가기
Python/Python FAQ

Python 코드의 메소드에서 현재 호출 스택을 출력하세요., Print current call stack from a method in code

by 베타코드 2023. 12. 5.
반응형

질문


파이썬에서는 메소드 내부에서 현재 호출 스택을 출력하는 방법이 있을까요? (디버깅 목적으로)


답변


스택을 가져오는 예제는 traceback 모듈을 통해 다음과 같이 출력됩니다:

import traceback

def f():
    g()

def g():
    for line in traceback.format_stack():
        print(line.strip())

f()

# 출력:
# File "so-stack.py", line 10, in <module>
#     f()
# File "so-stack.py", line 4, in f
#     g()
# File "so-stack.py", line 7, in g
#     for line in traceback.format_stack():

스택을 stderr에 출력하려면 다음을 사용할 수 있습니다:

traceback.print_stack()

또는 stdout에 출력하려면 (리디렉션된 출력을 함께 유지하는 데 유용) 다음을 사용하세요:

traceback.print_stack(file=sys.stdout)

하지만 traceback.format_stack()을 사용하면 원하는 대로 사용할 수 있습니다.

반응형

댓글