trace — Pythonステートメントの実行をトレースまたは追跡します—Pythonドキュメント
trace —Pythonステートメントの実行をトレースまたは追跡します
ソースコード: :source: `Lib / trace.py`
trace モジュールを使用すると、プログラムの実行をトレースし、注釈付きのステートメントカバレッジリストを生成し、呼び出し元と呼び出し先の関係を印刷し、プログラムの実行中に実行される関数を一覧表示できます。 別のプログラムまたはコマンドラインから使用できます。
コマンドラインの使用法
trace モジュールはコマンドラインから呼び出すことができます。 それは同じくらい簡単にすることができます
python -m trace --count -C . somefile.py ...
上記はsomefile.py
を実行し、実行中に現在のディレクトリにインポートされたすべてのPythonモジュールの注釈付きリストを生成します。
- --help
- 使用状況を表示して終了します。
- --version
- モジュールのバージョンを表示して終了します。
バージョン3.8の新機能:実行可能モジュールを実行できる--module
オプションが追加されました。
主なオプション
trace を呼び出すときは、次のオプションの少なくとも1つを指定する必要があります。 -listfuncs オプションは、 -trace および -count オプションと相互に排他的です。 -listfuncs が指定されている場合、 -count も -trace も受け入れられず、その逆も同様です。
- -c, --count
- プログラムの完了時に、各ステートメントが実行された回数を示す注釈付きリストファイルのセットを作成します。 以下の -coverdir 、 -file 、および -no-report も参照してください。
- -t, --trace
- 実行時に行を表示します。
- -l, --listfuncs
- プログラムを実行して実行した機能を表示します。
- -T, --trackcalls
- プログラムの実行によって公開された呼び出し関係を表示します。
修飾子
- -f, --file=<file>
- 数回のトレース実行でカウントを累積するファイルの名前。 -count オプションと一緒に使用する必要があります。
- -C, --coverdir=<dir>
- レポートファイルが保存されるディレクトリ。
package.module
のカバレッジレポートはファイルdir/package/module.cover
に書き込まれます。
- -m, --missing
- 注釈付きリストを生成するときは、
>>>>>>
で実行されなかった行にマークを付けます。
- -R, --no-report
- 注釈付きのリストを生成しないでください。 これは、 -count を使用して複数の実行を行い、最後に注釈付きリストの単一のセットを作成する場合に役立ちます。
- -g, --timing
- プログラムが開始されてからの時刻を各行の前に付けます。 トレース中にのみ使用されます。
フィルタ
これらのオプションは複数回繰り返すことができます。
- --ignore-module=<mod>
- 指定された各モジュール名とそのサブモジュール(パッケージの場合)は無視してください。 引数は、コンマで区切った名前のリストにすることができます。
- --ignore-dir=<dir>
- 指定されたディレクトリとサブディレクトリ内のすべてのモジュールとパッケージを無視します。 引数は、 os.pathsep で区切られたディレクトリのリストにすることができます。
プログラムインターフェイス
- class trace.Trace(count=1, trace=1, countfuncs=0, countcallers=0, ignoremods=(), ignoredirs=(), infile=None, outfile=None, timing=False)
単一のステートメントまたは式の実行をトレースするオブジェクトを作成します。 すべてのパラメーターはオプションです。 count は、行番号のカウントを有効にします。 trace は、ライン実行トレースを有効にします。 countfuncs は、実行中に呼び出された関数のリストを有効にします。 countcallers は、通話関係の追跡を有効にします。 ignoremods は、無視するモジュールまたはパッケージのリストです。 ignoredirs は、モジュールまたはパッケージを無視する必要があるディレクトリのリストです。 infile は、保存されているカウント情報を読み取るファイルの名前です。 outfile は、更新されたカウント情報を書き込むファイルの名前です。 Timing は、トレースが開始された日時を基準にしたタイムスタンプの表示を有効にします。
- run(cmd)
コマンドを実行し、現在のトレースパラメータを使用して実行から統計を収集します。 cmd は、 exec()に渡すのに適した文字列またはコードオブジェクトである必要があります。
- runctx(cmd, globals=None, locals=None)
定義されたグローバル環境とローカル環境で、コマンドを実行し、現在のトレースパラメーターを使用して実行から統計を収集します。 定義されていない場合、 globals および locals はデフォルトで空の辞書になります。
- runfunc(func, *args, **kwds)
現在のトレースパラメータを使用して Trace オブジェクトの制御下で、指定された引数を使用して func を呼び出します。
- results()
指定された Trace について、
run
、runctx
、およびrunfunc
への以前のすべての呼び出しの累積結果を含む CoverageResults オブジェクトを返します。実例。 蓄積されたトレース結果をリセットしません。
- class trace.CoverageResults
Trace.results()によって作成されたカバレッジ結果のコンテナ。 ユーザーが直接作成しないでください。
- update(other)
別の CoverageResults オブジェクトからのデータをマージします。
- write_results(show_missing=True, summary=False, coverdir=None)
カバレッジ結果を書き込みます。 show_missing を設定して、ヒットがなかった行を表示します。 summary を設定して、モジュールごとのカバレッジサマリーを出力に含めます。 coverdir は、カバレッジ結果ファイルが出力されるディレクトリを指定します。
None
の場合、各ソースファイルの結果はそのディレクトリに配置されます。
プログラムインターフェイスの使用法を示す簡単な例:
import sys
import trace
# create a Trace object, telling it what to ignore, and whether to
# do tracing or line-counting or both.
tracer = trace.Trace(
ignoredirs=[sys.prefix, sys.exec_prefix],
trace=0,
count=1)
# run the new command using the given tracer
tracer.run('main()')
# make a report, placing output in the current directory
r = tracer.results()
r.write_results(show_missing=True, coverdir=".")