我在这个话题上找到了几个相互矛盾的答案。这博客文章需要libuwind,但在Mac上不起作用。我在代码中包括了#include <google/profiler.h>,但是编译器(g++)找不到库。我通过自制的方式安装了gperftools。此外,我还发现了这堆栈溢出问题,显示如下:
然后运行pprof来生成输出: 隐藏~$ pprof --使用本地文件./a.out的文本./a.out cpu.profile。使用本地文件cpu.profile。从所有堆栈跟踪中删除__sigtramp。总数:282个样品107 37.9% 107 37.9% 107 37.9% 0x000000010d72229e 165.7% 43.6% 165.7%0x00000010d721a5f 12 4.3% 47.9% 124.3% 0x000000010d721de8 .
运行该命令(不执行任何前面的步骤)将使我获得以下信息:
[hidden]$ pprof --text ./a.out cpu.profile
Using remote profile at ./a.out.
Failed to get the number of symbols from http://cpu.profile/pprof/symbol为什么它试图访问我的机器上的一个互联网站点和他/她的本地文件?
尝试将lib分析器作为g++的试运行进行链接,我得到了以下信息:
[hidden]$ g++ -l libprofiler
ld: library not found for -llibprofiler
clang: error: linker command failed with exit code 1 (use -v to see invocation)我查看了手册页、帮助选项文本、官方在线指南、博客帖子和许多其他来源。
我现在很困惑。有人能帮我用口香糖吗?
我和@osgx交谈的结果是https://gist.github.com/CrazyPython/359528e67531e895e2ed945ad2e8f5c4。我试着把它清理一下。它可能也包含了许多不必要的选项。
发布于 2016-06-29 02:20:53
https://dudefrommangalore.wordpress.com/2012/02/09/profiling-c-code-using-google-performance-tools/的博文“使用Google分析C++代码”忽略了dudefrommangalore的基本步骤。
您应该将您的程序(您想要被描述的)链接到gperftools库的cpu分析器库中。
查阅官方手册:profiler.html,“图书馆链接”部分
将
-lprofiler添加到可执行文件的链接时间步骤中。(使用LD_PRELOAD在运行时也可能添加分析器,但这并不一定是推荐的。)
第二步是收集概要文件,在启用分析的情况下运行代码。在linux世界中,它是通过在运行之前设置控制环境变量CPUPROFILE来完成的:
CPUPROFILE=name_of_profile ./program_to_be_profiled第三步是使用pprof (google-pprof in ubuntu世界)。检查没有生成空的name_of_profile配置文件;它没有这样的文件,pprof将尝试进行远程配置文件提取(您可以看到这种尝试的输出)。
pprof ./program_to_be_profiled name_of_profile发布于 2016-06-26 00:51:13
首先,您需要在启用配置文件的情况下运行您的程序。
这通常是首先将您的程序与libprofiler连接起来,然后使用CPUPROFILE=cpu.profile运行它。
也就是说。
$ CPUPROFILE=cpu.profile my_program
我认为这是你一直缺少的。
程序将在退出时创建此cpu.profile文件。然后您可以使用pprof (最好来自github.com/google/pprof)对其进行可视化/分析。
https://stackoverflow.com/questions/37685434
复制相似问题