如何从gprof中排除某个功能?

时间:2014-09-04 16:27:40

标签: c++ profiler gprof

我想描述我的代码,但我想要一个不计算的函数。

我编译为:

g++ main_no_time.cpp -Wall -std=c++0x -p -pg -O3 -o eg

然后我跑:

./eg Datasets/Klein_nb_P1000_dim10000.txt 16 5 3 1
gprof -Q ./eg > Klein_nb_P1000_dim10000_cpu_rot1.txt

我要排除的功能有这个签名。

void readDivisionSpace(Division_Euclidean_space& ds, char* filename);

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

对于平面配置文件中的排除功能,您需要使用-P选项:

gprof eg gmon.out -P_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt

对于调用图中的排除函数,您需要使用-Q选项:

gprof eg gmon.out -Q_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt

此选项可以在同一时间使用:

gprof eg gmon.out -P_Z17readDivisionSpaceRiPc -Q_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt

注意:_Z17readDivisionSpaceRiPc是功能错误的名称。对于检测功能选项--no-demangle的错位名称可能很有用。您可以尝试通过以下方式检测函数readDivisionSpace的错位名称:

gprof eg gmon.out --no-demangle -Q -b | grep readDivisionSpace