Python では、メソッド内から現在の呼び出しスタックを印刷するにはどうすればよいですか (デバッグ目的)。
ベストアンサー1
以下はスタックを取得する例です。トレースバックモジュールを作成し、印刷します。
import traceback
def f():
g()
def g():
for line in traceback.format_stack():
print(line.strip())
f()
# Prints:
# 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()
好きなようにすることができます。