首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac上使用gperftools的问题

在Mac上使用gperftools的问题
EN

Stack Overflow用户
提问于 2016-06-07 17:16:26
回答 2查看 5.2K关注 0票数 1

我在这个话题上找到了几个相互矛盾的答案。博客文章需要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 .

运行该命令(不执行任何前面的步骤)将使我获得以下信息:

代码语言:javascript
复制
[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++的试运行进行链接,我得到了以下信息:

代码语言:javascript
复制
[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。我试着把它清理一下。它可能也包含了许多不必要的选项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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来完成的:

代码语言:javascript
复制
CPUPROFILE=name_of_profile ./program_to_be_profiled

第三步是使用pprof (google-pprof in ubuntu世界)。检查没有生成空的name_of_profile配置文件;它没有这样的文件,pprof将尝试进行远程配置文件提取(您可以看到这种尝试的输出)。

代码语言:javascript
复制
pprof ./program_to_be_profiled name_of_profile
票数 1
EN

Stack Overflow用户

发布于 2016-06-26 00:51:13

首先,您需要在启用配置文件的情况下运行您的程序。

这通常是首先将您的程序与libprofiler连接起来,然后使用CPUPROFILE=cpu.profile运行它。

也就是说。

$ CPUPROFILE=cpu.profile my_program

我认为这是你一直缺少的。

程序将在退出时创建此cpu.profile文件。然后您可以使用pprof (最好来自github.com/google/pprof)对其进行可视化/分析。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37685434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档