このモジュールはPythonプログラムのスタックトレースを抽出し、書式を整え、表示するための標準インターフェースを提供します。モジュールがスタックトレースを表示するとき、Pythonインタープリタの動作を正確に模倣します。インタープリタの``ラッパー''の場合のように、プログラムの制御の元でスタックトレースを表示したいと思ったときに役に立ちます。
モジュールはtracebackオブジェクトを使います -- これは変数sys.exc_traceback
(非推奨)とsys.last_traceback
に保存され、sys.exc_info()から三番目の項目として返されるオブジェクト型です。
モジュールは次の関数を定義します:
traceback[, limit[, file]]) |
None
の場合は、すべての項目が表示されます。fileが省略されるかNone
の場合は、sys.stderr
へ出力されます。それ以外の場合は、出力を受けるためのオープンしたファイルまたはファイルに類似したオブジェクトであるべきです。
type, value, traceback[, limit[, file]]) |
None
でない場合は、ヘッダ"Traceback (most recent call last):"を出力します。 (2) スタックトレースの後に例外typeとvalueを出力します。 (3) typeがSyntaxErrorであり、valueが適切な形式の場合は、エラーのおおよその位置を示すカレットを付けて構文エラーが起きた行を出力します。
[limit[, file]]) |
print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback, limit, file)
のための省略表現です。(非推奨の変数を使う代わりにスレッドセーフな方法で同じ情報を引き出すために、実際にはsys.exc_info()を使います。)
[limit]) |
print_exc(limit)
に似ていますが、ファイルに出力す
るかわりに文字列を返します。
バージョン 2.4 で 新たに追加 された仕様です。
[limit[, file]]) |
print_exception(sys.last_type, sys.last_value, sys.last_traceback, limit, file)
の省略表現です。
[f[, limit[, file]]]) |
traceback[, limit]) |
None
の場合は、すべての項目が取り出されます。``前処理済み''スタックトレース項目とは四つの部分からなる(filename, line number, function name, text)で、スタックトレースに対して通常出力される情報を表しています。textは前と後ろに付いている空白を取り除いた文字列です。ソースが使えない場合はNone
です。
[f[, limit]]) |
list) |
None
でないそれらの要素に対しては、文字列は内部に改行を含んでいるかもしれません。
type, value) |
sys.last_type
とsys.last_value
のような例外の型と値です。戻り値はそれぞれが改行で終わっている文字列のリストです。通常、リストは一つの文字列を含んでいます。しかし、SyntaxError例外に対しては、(出力されるときに)構文エラーが起きた場所についての詳細な情報を示す行をいくつか含んでいます。どの例外が起きたのかを示すメッセージは、常にリストの最後の文字列です。
type, value, tb[, limit]) |
tb[, limit]) |
format_list(extract_tb(tb, limit))
の省略表現。
[f[, limit]]) |
format_list(extract_stack(f, limit))
の省略表現。
tb) |
tb.tb_lineno
が正しく更新されなかったからです。この関数は2.3以降のバージョンでは役に立ちません。