По словам мужчины:
для отображения плоского профиля и исключения функции из него необходимо использовать -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
Если вам нужно исключить функцию из одного отчета, но не исключать какую-либо функцию из другого, вам нужно использовать опции -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]
-----------------------------------------------