prex で作成したバイナリのトレースファイルには、ユーザーが選択した prex コマンドによって判定された情報が含まれています (「prex の実行」を参照)。
デフォルトでは、トレースファイルは /$TMPDIR/trace-pid に作成されます。この pid は、ターゲットのプログラムのプロセス ID です。$TMPDIR が設定されていない場合は、/tmp/trace-pid にファイルが作成されます。トレースファイルの場所は、prex コマンドに -o オプションを付けて変更できます (詳細については、「prex のコマンド行オプション」を参照してください)。
トレースファイルが一杯になると、新しいイベントによって古いイベントが上書きされます。トレースファイルのデフォルトサイズは、4 MB です。このサイズは、prex の -s オプションで変更することができます。
プログラムのトレース結果がファイルに書き込まれた後で、そのプログラムが存在する間にはそのトレースファイルを削除したり、トレースファイルの名前を変更することはできません。トレースファイルをターゲットプログラムから切り離し、別の名前に変更したトレースファイルを再接続しても、新しい名前は無視されます。
バイナリのトレースファイルを ASCII ファイルに変換するには、tnfdump コマンドとバイナリのトレースファイルの名前を使用します。デフォルトで tnfdump の出力は stdout に送られるため、その出力をファイルにリダイレクトする必要があります。
$ tnfdump filename > newfile
tnfdump に -r オプションを付けると、詳細な (生の) TNF 出力が得られます。この詳細な TNF 出力を解釈するには、この章の説明範囲を超えた TNF の知識が必要となります。
「prex セッションのサンプル」で説明した prex cookie コマンドの出力を以下に示します。tnfdump ファイルの出力は非常に幅が広いので、出力を表示する場合は幅の広いウィンドウを開いてください。
probe tnf_name: "start" tnf_string: "keys cookie main;file cookie.c;line 17;sunw%debug starting main" probe tnf_name: "factor_start" tnf_string: "keys factor;file cookie.c;line 61;" probe tnf_name: "found_a_factor" tnf_string: "keys cookie find_factor;file cookie.c;line 67;" probe tnf_name: "factor_end" tnf_string: "keys factor;file cookie.c;line 72;" ---------------- ---------------- ----- ----- ---------- --- ------------------------- ------------------------ Elapsed (ms) Delta (ms) PID LWPID TID CPU Probe Name Data / Description . . . ---------------- ---------------- ----- ----- ---------- --- ------------------------- ------------------------ 0.000000 0.000000 5354 1 0 - start 4551.625000 4551.625000 5354 1 0 - factor_start input_number: 25 4571.278000 19.653000 5354 1 0 - found_a_factor searching_for: 25 factor: 5 4571.543000 0.265000 5354 1 0 - found_a_factor searching_for: 5 factor: 5 4571.732000 0.189000 5354 1 0 - factor_end 23151.434000 18579.702000 5354 1 0 - factor_start input_number: 101247 23151.509000 0.075000 5354 1 0 - found_a_factor searching_for: 101247 factor: 3 23228.090000 76.581000 5354 1 0 - found_a_factor searching_for: 33749 factor: 33749 23228.250000 0.160000 5354 1 0 - factor_end 89041.868000 65813.618000 5354 1 0 - factor_start input_number: -1690908149 89041.920000 0.052000 5354 1 0 - factor_end 108271.852000 19229.932000 5354 1 0 - factor_start input_number: 43645729 208857.756000 100585.904000 5354 1 0 - found_a_factor searching_for: 43645729 factor: 43645729 208857.960000 0.204000 5354 1 0 - factor_end 334511.548000 125653.588000 5354 1 0 - factor_start input_number: 12 334511.618000 0.070000 5354 1 0 - found_a_factor searching_for: 12 factor: 2 334511.689000 0.071000 5354 1 0 - found_a_factor searching_for: 6 factor: 2 334511.750000 0.061000 5354 1 0 - found_a_factor searching_for: 3 factor: 3 334511.808000 0.058000 5354 1 0 - factor_end
tnfdump の表示を見て、factor_end の時間から factor_start の時間を引くと、因数を見つけるまでに要した時間がわかります。43645729 の因数分解には、208857.960000 - 108271.852000 (つまり、100586.11) ミリ秒間かかっています。12 の因数分解には、334511.808000 - 334511.548000 (つまり、0.260000) ミリ秒間かかっています。
どのハードウェアプラットフォームでも、結果はナノ秒の精度で報告されます。ただし、結果の正確度は、使用しているハードウェアプラットフォームによって異なります。