総合手引 | セクション 1 | English | オプション |
gprof ユーティリティは、各ルーチンが消費した時間を計算します。 次に、この時間は呼び出しグラフの辺にそって伝播されます。 サイクルが見つかると、サイクルに対する呼び出しが、サイクルの時間を 共有するものとされます。 最初のリストには、関数からの呼び出しグラフ全体の合計時間によって ソートされた関数が表示されています。 各関数のエントリの下には、その関数の呼び出しグラフ での (直接の) 子 (すなわち呼び出された関数名) が表示され、それらの 関数の消費時間がどれくらい親 (つまり呼び出した側の関数) に伝播されているかが 示されています。 同様に、各関数のエントリの上側には、 関数での消費時間が呼び出し元の関数にどのように伝播されているかが 示されています。
サイクル全体とそのメンバのリストを示したエントリが、 サイクルの呼び出し回数や実行時間への各メンバの寄与を含めて表示されます。
次のリストでは、 prof(1) (NetBSD, FreeBSDにはありません) と同様なフラットプロファイル (flat profile) 表示されます。 ここには、関数の合計実行時間や呼び出し回数、 その関数本体のみの実行時間 (ミリ秒またはマイクロ秒)、 その関数本体及びそこから呼び出された関数の実行時間 (ミリ秒またはマイクロ秒)、 が表示されます。
最後に関数名の索引が表示されます。
以下のオプションが利用可能です。
| |
静的に宣言された関数の表示を抑制します。 このオプションが指定されると、静的関数についてのすべての関連する情報 (実行時間、別の関数の呼び出し、他の関数からの呼び出しなど) が、 a.out ファイル中の静的関数の直前に読み込まれるされる関数に含まれることになります。 | |
| |
プロファイル中の各フィールドの説明文を抑制します。 | |
| |
count 数以上の関数を含む (呼び出し関係の) サイクルを取り除くために、 切断すべきアーク (呼び出し関係) の最小集合を見つけます。 注意:サイクルを中断するために用いられるアルゴリズムは指数関数的な ものです。 そのため、このオプションを指定すると、 gprof を実行するのに非常に長い時間がかかります。 | |
| |
ルーチン
name
とそのすべての子孫 (それらの関数が表示抑制されていない親をほかに
持っていなければ) のグラフプロファイルエントリの表示を抑制
します。
2 つ以上の
| |
| |
| |
| |
指定されたルーチン
name
とその子孫のグラフプロファイルエントリ
のみを表示します。
| |
| |
| |
| |
fromname
から
toname
への関数呼び出し関係のアークを削除します。
このオプションによって、不必要だと思うサイクルを切断することができます。
オプション
| |
| |
sysctl(3) および kldsym(2) のインタフェースを使用して、 現在実行中のカーネルからシンボル情報を収集します。 これは、 a.out 引数を無視させ、 kld(4) [英語] モジュール中のシンボルを使用できるようにします。 | |
| |
呼び出しグラフプロファイルの表示を抑制します。 | |
| |
フラットプロファイルの表示を抑制します。 | |
| |
指定されたすべてのプロファイルファイル中のプロファイル情報の合計
を表すサマリプロファイルファイル
gmon.sum
が生成されます。
このサマリプロファイルファイルはこのあとの
gprof
の実行に
対して与えられ (その際にも通常
| |
| |
C プログラムには見えない名前の関数の表示を抑制します。 ELF オブジェクト形式では、文字 ‘.amp;’ を含む名前を意味します。 a.out オブジェクト形式では、文字 ‘_’ で開始しない名前を意味します。 それらの関数に関連する情報は、すぐ低位側のアドレスにある (表示が 抑制されていない) 関数に含まれます。 これにより関数内にあるただのラベルが関数と認識されてしまうのを 防ぐ事ができます。 | |
| |
使用されていないルーチン (呼び出し回数と合計時間が 0 である) を表示します。
| |
a.out | テキスト空間と名前リスト。 |
a.out.gmon | |
動的な呼び出しグラフとプロファイル。 | |
gmon.sum | 動的な呼び出しグラフとプロファイルのサマリ。 |
Software - Practice and Experience, pp. 671-685, An Execution Profiler for Modular Programs, 13, 1983.
, , ,6, Proceedings of the SIGPLAN '82 Symposium on Compiler Construction, SIGPLAN Notices, pp. 120-126, gprof: A Call Graph Execution Profiler, 17, June 1982.
, , ,自身がプロファイルされていない親は、プロファイルしている子供から 伝播される時間を持っており、呼び出しグラフのリストのなかで 自動的に起動されるものとして現れます。 しかし、この関数が持つ時間は それ以上伝播されません。 同様に、シグナルを捕捉する関数は、それらがプロファイルされていても、 自動的に起動されるものとして現れます (もう少し複雑な理由がありますが)。 プロファイルルーチンを実行している最中にシグナルを捕捉する 関数が呼出されたとき (この場合はすべてが失われてしまいます) を除いては、 シグナルを捕捉する関数の子供の実行時間は、その親に正しく 伝播されるべきです。
プロファイルされているプログラムは、 グラフプロファイル ファイルにプロファイル情報がセーブされるよう exit(3) を呼ぶか、正常に終了しなければいけません。
GPROF (1) | June 20, 2004 |
総合手引 | セクション 1 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | If you have an emergency I'm great at running around and flailing my arms | ” |
— Artur Bagyants |