According to the person:
to display a flat profile and exclude it, use the -P option:
gprof main gmon.out -Pfunction_name
To display the call schedule and the function of exclusion from it, you need to use the -Q option:
gprof main gmon.out -Qfunction_name
These parameters can be repeated and used at the same time:
gprof main gmon.out -Pfunction_name -Qfunction_name -Qother_function_name
If you need to exclude a function from one report, but not exclude any function from another, you need to use the -P or -Q options.
Example:
Create a program:
#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; }
Compile it: gcc main.c -pg -o main
And launch:
$ ./main func_a func_b func_c
Profile reporting:
If you only need a flat print profile, you need to call:
$ 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
If you need a flat print profile, excluding the func_a and func_c , and a full call schedule, you need to call:
$ 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]
If you need a flat print profile, excluding the func_a and func_c , and a call graph, excluding func_b , you need to call:
$ 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]
source share