Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

3.4.75 –pg

gprof プロファイラを使用するプロファイリング用にコンパイルします。(-xpg-pg と同義です)

-p オプションを使用した場合と同様の形式でプロファイル用にコードをコンパイルします。ただし、詳細な統計情報を記録する実行時記録メカニズムも起動され、プログラムが正常に終了すると、gmon.out ファイルが生成されます。gprof を実行すると、実行プロファイルが生成されます。詳細は、gprof(1) のマニュアルページおよび『Fortran プログラミングガイド』を参照してください。

ライブラリオプションは、ソースファイルと .o ファイルのあとに指定してください (-pg ライブラリは静的)。


注 -  -pg を指定した場合、-xprofile でコンパイルする利点はありません。これら 2 つの機能は、他方で使用できるデータを生成せず、他方で生成されたデータを使用できません。

64 ビット Solaris プラットフォームで prof(1) または gprof(1)、32 ビット Solaris プラットフォームで gprof を使用して生成されたプロファイルには、おおよそのユーザー CPU 時間が含まれます。これらの時間は、メインの実行可能ファイルのルーチンと、実行可能ファイルをリンクするときにリンカー引数として指定した共有ライブラリのルーチンの PC サンプルデータ (pcsample(2) を参照) から導出されます。そのほかの共有ライブラリ (dlopen(3DL) を使用してプロセスの起動後に開かれたライブラリ) のプロファイルは作成されません。

32 ビット Solaris システムの場合、prof(1) を使用して生成されたプロファイルには、実行可能ファイルのルーチンだけが含まれます。32 ビット共有ライブラリのプロファイルは、-pg で実行可能ファイルをリンクし、gprof(1) を使用することで作成できます。

Solaris 10 ソフトウェアには、-p でコンパイルされたシステムライブラリは含まれていません。その結果、Solaris 10 プラットフォームで収集されたプロファイルには、システムライブラリルーチンの呼び出し回数が含まれません。

コンパイラオプション -p-pg、または -xpg の実行時サポートは、スレッドに対して安全ではありません。そのため、マルチスレッドプログラムのコンパイルには使用しないでください。マルチスレッドを使用するプログラムをこれらのオプションを付けてコンパイルすると、実行時に、不正な結果やセグメント例外が発生する可能性があります。

gprof プロファイリング用に -xpg を使用してコンパイルされたバイナリは、binopt(1) と一緒に使用してはいけません。これは、両者に互換性がなく、内部エラーが発生する可能性があるためです。

コンパイルとリンクを分けて行う場合、-pg を付けてコンパイルしたときはリンクでも必ず -pg を付けてください。

x86 システムでは、-pg には -xregs=frameptr との互換性がないため、これらの 2 つのオプションは一緒に使用してはいけません。また、-xregs=frameptr-fast に含まれています。