1. ホーム
  2. パイソン

[解決済み】Pythonのコードでメソッドから現在のコールスタックを表示する

2022-04-13 04:32:39

質問

Pythonで、(デバッグのために)メソッド内から現在のコールスタックを表示するにはどうすればよいですか?

どのように解決するのですか?

を経由してスタックを取得する例を示します。 トレースバック モジュールを作成し、それを印刷する。

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():

本当にスタックだけを標準エラー出力したい場合は、以下のようにします。

traceback.print_stack()

また、標準出力に出力する場合(リダイレクトされた出力をまとめて出力したい場合に便利です)には

traceback.print_stack(file=sys.stdout)

しかし、それを経由して得ることは traceback.format_stack() を使えば、好きなことを好きなだけできます。