コード内のメソッドから現在の呼び出しスタックを出力する 質問する

コード内のメソッドから現在の呼び出しスタックを出力する 質問する

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()好きなようにすることができます。

おすすめ記事