いくつかの変更がインタプリタへ加えられました:
sys.settrace(func)
がグローバルトレース関数を設定します
トレース関数は三つの引数、 frame、eventおよびarg
を持ちます。
frameは現在のスタックフレームです。
eventは文字列で、'call'
、'line'
、'return'
、
'exception'
、'c_call'
、'c_return'
または'c_exception'
です。
argはイベント型に依存します。
新しいローカルスコープに入ったときはいつでも、グローバルトレース関数が('call'
に設定されたeventとともに)呼び出されます。そのスコープで用いられるローカルトレース関数への参照を返すか、またはスコープがトレースされるべきでないならばNone
を返します。
ローカルトレース関数はそれ自身への(あるいは、さらにそのスコープ内でさらにトレースを行うための他の関数への)参照を返します。または、そのスコープにおけるトレースを停止させるためにNone
を返します。
トレース関数としてインスタンスメソッドが受け入れられます(また、とても便利です)。
イベントは以下のような意味を持ちます:
'call'
None
です。戻り値はローカルトレース関数を指定します。
'line'
None
です。戻り値は新しいローカルトレース関数を指定します。
'return'
'exception'
(exception, value, traceback)
です。戻り値は新しいローカルトレース関数を指定します。
'c_call'
'c_return'
None
です。
'c_exception'
None
です。
例外が一連の呼び出し元を伝えられて行くときに、'exception'
イベントは各レベルで生成されることことに注意してください。
コードとフレームオブジェクトについてさらに情報を得るには、Python Reference Manualを参照してください。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。