[英]Profile c++ program in perf
我是Ubuntu 16.04用户。 对于配置c++
程序,我使用perf
工具。 所以我跑:
perf record ./myprogram myprogram_args
perf report
现在作为输出,我有:
14,52% CSim2Sim libsimgrid.so.3.13.90 [.] lmm_solve
4,40% CSim2Sim libsimgrid.so.3.13.90 [.] lmm_update_modified_set_rec
4,05% CSim2Sim libc-2.23.so [.] _int_malloc
3,30% CSim2Sim libsimgrid.so.3.13.90 [.] simgrid::surf::Model::next_occuring_event_lazy
2,19% CSim2Sim libc-2.23.so [.] _int_free
........................................................................
我只能从程序中看到“深度”和库调用。 如何从类似于此模板的性能报告中获取报告? (类似这样):
4,52% CSim2Sim my_function1(int argc, char* argv[])
3,52% CSim2Sim my_function2(int argc, char* argv[])
3,52% CSim2Sim my_function3(int argc, char* argv[])
1,52% CSim2Sim my_function4(int argc, char* argv[])
从perf到info:perf到Perf Wiki ,最后到Tutorial-Perf Wiki
使用perf注释的源代码级别分析
...
如果使用-ggdb编译应用程序,则perf注释可以生成源代码级别的信息。 下面的代码片段显示了使用此调试信息进行编译时,对于相同执行noploop的更多信息输出。
因此,使用选项-ggdb
编译(也许链接?)应该可以解决问题。
然后,您可以使用perf record
来收集运行时信息,然后使用perf annotate
进行分析。
我刚刚找到了gprof替代方法的答案。 如果要获取调用图信息,建议使用gcc的选项-fno-omit-frame-pointer
。 因此,根据您要实现的目标和优化级别,您可能还需要添加此选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.