prof コマンド
目的
オブジェクト・ファイルのプロファイル・データを表示します。
構文
prof [ -t | -c | -a | -n ] [ -o | -x ] [ -g ] [ -z ] [ -h ] [ -s ] [ -S ] [ -v ] [ -L PathName ] [ Program ] [ -m MonitorData ... ]
説明
prof コマンドは、オブジェクト・ファイル Program (デフォルトでは a.out) に関して monitor サブルーチンが収集したプロファイル・データの解釈をします。これは、オブジェクト・ファイル Program 内の記号テーブルを読み取って、プロファイル・ファイル (デフォルトでは mon.out) と関連付けます。prof コマンドは、外部テキストの記号ごとに、その記号のアドレスから次の記号のアドレスまでに費やされた実行時間のパーセンテージ、関数のコール回数、およびコール 1 回当たりの平均ミリ秒数を表示します。
関数のコール回数を記録するには、-p フラグを指定した cc コマンドを使用して、ファイルをコンパイルしておく必要があります。-p フラグによって、コンパイラーは mcount サブルーチンのコールを、プログラムの再コンパイル後の各関数に対して生成されたオブジェクト・コードに挿入させます。プログラムの実行中、親関数が子関数をコールするたびに、子関数は mcount サブルーチンをコールして、その親子の対に対して専用のカウンターを増やします。-p フラグで再コンパイルされていないプログラムには mcount サブルーチンが挿入されていないので、どの関数がそのプログラムをコールしたかは記録されません。
また -p フラグは、プログラム開始時と終了時に monitor サブルーチンをコールする特別プロファイル始動関数がオブジェクト・ファイルに含まれるようにします。プログラムの終了時に monitor サブルーチンをコールすると、実際に mon.out ファイルを書き込みます。したがって、明示的にメインプログラムを終了させるかまたはメインプログラムから戻るプログラムのみが、mon.out ファイルを作成します。
PROF=filename:<filename>
例えば PROF=myprof
と設定すると、生成されるファイルは myprof.out
という
名前になります。ロードされたオブジェクトの位置および名前は mon.out ファイルに保管されます。フラグを選択しない場合は、prof はこれらの名前を使用します。ほかのオブジェクトにアクセスするには、プログラムを指定するかまたは -L オプションを使用しなければなりません。
フラグ
相互に排他的なフラグ a、c、n、および t は prof コマンドによる出力行のソート方法を決定します。
項目 | 説明 |
---|---|
-a | 記号アドレスの昇順でソートします。 |
-c | コール回数の降順でソートします。 |
-n | シンボル名の字句別にソートします。 |
-t | 合計時間のパーセンテージの降順でソートします (デフォルト)。 |
注: フラグ a、c、n、および t のうち複数のフラグを同じコマンドで使用しても、prof コマンドを正常に実行できます。 prof コマンドは、これらのフラグのうちコマンド・ラインで最初に見つかったフラグを受け取り、それ以外は無視します。
相互に排他的なフラグ o および x は、モニターされる各記号のアドレスの表示方法を指定します。
項目 | 説明 |
---|---|
-o | 各アドレスをシンボル名とともに 8 進数で表示します。 |
-x | 各アドレスをシンボル名とともに 16 進数で表示します。 |
注: -o フラグおよび -x フラグの両方を同じコマンドで使用しても、prof コマンドを正常に実行できます。prof コマンドは、この 2 つのフラグのうちコマンド・ラインで最初に見つかったフラグを受け取り、別のフラグは無視します。
以下のフラグは任意に組み合わせて使用できます。
項目 | 説明 |
---|---|
-g | 非グローバル記号 (静的関数) を含めます。 |
-h | 通常はレポートに表示される見出しを抑制します。これは、レポートをさらに処理する場合に有効です。 |
-L PathName | 共用オブジェクトの位置を決めるために代替パス名を使用します。 |
-m MonitorData | mon.out のかわりに MonitorData からプロファイル・データを取り出します。 |
-s | mon.sum に要約ファイルを生成します。これは、複数のプロファイル・ファイルを指定するときに有効です。 |
-S | 標準エラーにモニター・パラメーターおよび統計情報の要約を表示します。 |
-v | すべての表示を抑制し、プロット・フィルターで表示できるように標準出力に図形バージョンのプロファイルを送信します。プロット時に、番号の下限および上限 (デフォルトでは 0 および 100) を指定すると、プロファイルの選択されたパーセンテージをそれに対応する高解像度でプロットすることができます。 |
-z | 0 (ゼロ) コールおよび 0 (ゼロ) 時間に関連している場合でも、すべての記号をプロファイルの範囲内に含めます。 |
例
- 各記号アドレスでの消費時間を時間でソートして、ヘッダーを付けずに表示するには、以下のように入力します。
prof -t -h
- 次の例では、ディレクトリー /home/score/lib 内でファイル runfile を作成するために使用される共用ライブラリーのローカル・バージョンを取り出します。使用されるデータ・ファイルは mon.out ではなく runfile.mon です。
prof -x -L/home/score/lib runfile -m runfile.mon
ファイル
項目 | 説明 |
---|---|
mon.out | デフォルトのプロファイル。 |
a.out | デフォルトのオブジェクト・ファイル。 |
mon.sum | 要約プロファイル。 |