男によると:
-P
フラットプロファイルを表示し、機能を除外するには、次のオプションを使用する必要があります。
gprof main gmon.out -Pfunction_name
-Q
コールグラフを表示し、関数を除外するには、次のオプションを使用する必要があります。
gprof main gmon.out -Qfunction_name
このオプションは、繰り返して同時に使用できます。
gprof main gmon.out -Pfunction_name -Qfunction_name -Qother_function_name
1つのレポートから機能を除外する必要があるが、他のレポートから機能を除外しない場合は、使用-p
または-q
オプションが必要です。
例:
プログラムの作成:
#include <stdio.h>
#include <stdlib.h>
void func_a () {printf ("%s ",__FUNCTION__);}
void func_b () {printf ("%s ",__FUNCTION__);}
void func_c () {printf ("%s ",__FUNCTION__);}
int main ()
{
func_a ();
func_b ();
func_c ();
return EXIT_SUCCESS;
}
コンパイルします:
gcc main.c -pg -o main
そして起動:
$ ./main
func_a func_b func_c
プロファイルレポートを生成します。
フラットプロファイルのみを印刷する必要がある場合は、次の電話番号に電話してください。
$ gprof main gmon.out -b -p
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1 0.00 0.00 func_a
0.00 0.00 0.00 1 0.00 0.00 func_b
0.00 0.00 0.00 1 0.00 0.00 func_c
関数と完全なコールグラフを除くフラットプロファイルを印刷する必要がある場合はfunc_a
、func_c
次の呼び出しが必要です。
$ gprof main gmon.out -b -Pfunc_a -Pfunc_c -q
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1 0.00 0.00 func_b
index % time self children called name
0.00 0.00 1/1 main [9]
[1] 0.0 0.00 0.00 1 func_a [1]
-----------------------------------------------
0.00 0.00 1/1 main [9]
[2] 0.0 0.00 0.00 1 func_b [2]
-----------------------------------------------
0.00 0.00 1/1 main [9]
[3] 0.0 0.00 0.00 1 func_c [3]
-----------------------------------------------
関数func_a
を除いてフラットプロファイルを印刷し、必要な場合をfunc_c
除いてグラフを呼び出すfunc_b
必要がある場合:
$ gprof main gmon.out -b -Pfunc_a -Pfunc_c -Qfunc_b
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1 0.00 0.00 func_b
index % time self children called name
0.00 0.00 1/1 main [9]
[1] 0.0 0.00 0.00 1 func_a [1]
-----------------------------------------------
0.00 0.00 1/1 main [9]
[3] 0.0 0.00 0.00 1 func_c [3]
-----------------------------------------------