2012-03-30 8 views
3

スタックフレームをtraceback.print_stackに渡す方法を教えてください。 Python 3.3a1 docsからスタックフレームを取得する

traceback.print_stack(f=None, limit=None, file=None)

この関数 は呼び出された時点からのスタックトレースを出力します。オプションのf 引数を使用して、代替のスタックフレームを開始することができます。 オプションのlimitおよびfile引数は、 print_exception()の場合と同じ意味を持ちます。

しかし、ドキュメントのどこにもスタックフレームを実際に取得する方法はありませんでした。具体的には、呼び出しポイントの1つ上のレベルからスタックトレースを出力したいとします。どうやってやるの?

答えて

2

inspect.stack()は、現在のスタックをリストとして取得します。あなたはそれから望む任意のフレームを選ぶことができます。たとえば、次のようにすることもできます。 inspect.currentframe().f_backを呼び出して発信者のフレームを取得します。基本的に、inspectモジュールはどこにあるのですか?

2

Thisドキュメントには、スタックフレームを取得するために使用できる関数の情報があります(例:inspect.currentframe())。

1

モジュールを検査に加えて、あなたは試すことができます:

import sys 
sys._getframe(1) 

または

import sys 
sys._getframe().f_back 

は、Pythonのいくつかのバージョンは、それを実装しないことがあり、それはプライベートな機能です注意してください。

関連する問題