gperftools - 未转储配置文件

时间:2017-10-26 08:32:52

标签: profiling ubuntu-14.04 qt-creator gperftools

我已经配置并构建了gpreftools。但是,我似乎无法找到我的程序生成的配置文件来显示它。

我采取了以下行动:

  1. -lprofiler链接器标志添加到.pro,构建程序并在链接阶段正确添加标志。 QMAKE_LFLAGS += -lprofiler

  2. 运行: $ CPUPROFILE=/tmp/prof.out /path/to/executable

  3. 执行: $ pprof --gv /path/to/MyExe /tmp/prof.out

  4. 然后我得到以下内容:

    Failed to get profile: curl -s --max-time 90 'http:///pprof/profile?seconds=30' > /home/eslam/pprof/.tmp.MyExe.1509005857.: No such file or directory.

    任何人都对此有决心吗?

2 个答案:

答案 0 :(得分:1)

检查您的程序是否实际链接到libprofiler.so。某些操作系统(例如AFAIK某些版本的ubuntu)实际上并没有添加.so,如果实际上没有使用任何符号。例如。 ldd ./yourprogram应列出libprofiler.so。如果没有发生这种情况,那么你应该在你的链接器标志之前添加-Wl, - no-as-needed之类的内容。

答案 1 :(得分:1)

LD_PRELOAD方法

除了在构建时间mentioned by Eslam传递-Wl,--no-as-needed,-lprofiler,--as-needed之外,还可以通过在运行时传递LD_PRELOAD选项,使它无需修改构建即可工作:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libprofiler.so CPUPROFILE=prof.out ./main.out

您可以使用libprofiler.so轻松找到locate libprofiler.so

另请参阅:How can I profile C++ code running on Linux?

在Ubuntu 18.04中测试。