標準の GNU プロファイラーである gprof は、ほとんどの Unix 系システムで利用できます。 gprof は GNU ツールチェーンの一部であり、最も初期のオープン ソース コード プロファイリング ツールの 1 つです。これは、100 Hz のサンプル レートを使用して、コンパイル時のインストルメンテーションとサンプリング技術を組み合わせたものです。カーネル サポートを必要としないという利点があります。
gprof を使用してプロファイリングするプログラムを準備するには、コンパイル フラグとリンク フラグに -pg を追加します。これにより、コール ツリーに関する情報を収集するコードが関数プリアンブルに挿入されます。プログラムを実行すると、サンプルが収集されてバッファーに保存されます。このバッファーは、プログラムの終了時に gmon.out という名前のファイルに書き込まれます。
gprof コマンドの実行中に以下のエラーが発生した場合:
選択したディストリビューションに従って、以下に示すように binutils パッケージをインストールしてみてください。
分布 | コマンド |
---|---|
OS X | brew install binutils |
Debian | apt-get install binutils |
Ubuntu | apt-get install binutils |
アルパイン | apk add binutils |
Arch Linux | pacman -S binutils |
カリ Linux | apt-get install binutils |
CentOS | yum install binutils |
Fedora | dnf install binutils |
Raspbian | apt-get install binutils |
gprof は、オブジェクト ファイルのプロファイル データを表示します。ファイルのシンボル テーブルは、コール グラフ プロファイル ファイル gmon.out (以前に gcc -pg でコンパイルして作成されたもの) と比較されます。 gprof のオプションの多くは、指定されたファイルまたは関数にオプションを制限するために、シンボル仕様の引数、または symspec を取ります。 symspec は、ファイル名、関数、または行番号です。 filename:function または filename:linenumber として指定して、特定のファイル内の関数または行番号を指定することもできます。 gprof は、ファイル名にピリオドが含まれ、関数にピリオドが含まれていないことを想定しています。