반응형
질문
파이썬에서는 메소드 내부에서 현재 호출 스택을 출력하는 방법이 있을까요? (디버깅 목적으로)
답변
스택을 가져오는 예제는 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()
을 사용하면 원하는 대로 사용할 수 있습니다.
반응형
댓글