【问题标题】:How to exclude a certain function from gprof?如何从 gprof 中排除某个函数?
【发布时间】:2014-09-04 16:27:39
【问题描述】:

我想分析我的代码,但我希望一个函数不计算在内。

我编译为:

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);

我怎样才能做到这一点?

【问题讨论】:

    标签: c++ profiler gprof


    【解决方案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
    

    【讨论】:

    • 我使用了'gprof eg gmon.out -P_readDivisionSpace -Q_readDivisionSpace > Klein_nb_P1000_dim10000_cpu_rot1.txt',但该函数仍然很重要。我错过了什么? ://
    • _readDivisionSpace - 看起来很可疑,这是真正的错位名称吗?你可以用gprof eg gmon.out --no-demangle -Q -b查看名字。
    • 我不知道什么是乱码。这是我在问题中写的功能。命令应该如何?
    • 我希望它有助于检测名称:gprof eg gmon.out --no-demangle -Q -b | grep readDivisionSpace
    • 是的!好的。我建议您使用此信息(名称检测)编辑您的答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2021-07-02
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多