首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gperftools/pprof时无函数名

使用gperftools/pprof时无函数名
EN

Stack Overflow用户
提问于 2019-12-14 10:02:47
回答 2查看 952关注 0票数 2

我一直在尝试让gperftools的CPU分析在我的程序上工作。

我遇到了一个问题,当pprof报告时,我的程序中的所有函数名都是指针地址。令人恼火的是,我链接的库中的大多数函数名都是可读的,但我的程序文件中没有一个是可读的。下面是一个例子。

代码语言:javascript
复制
s979258ca% pprof --text ./hmiss hmiss.prof                                        
Using local file ./hmiss.
Using local file hmiss.prof.
Total: 469 samples
     152  32.4%  32.4%      152  32.4% 0x000000010ba6dd45
      47  10.0%  42.4%       47  10.0% 0x000000010ba6d365
      46   9.8%  52.2%       46   9.8% 0x000000010ba6d371
      34   7.2%  59.5%       34   7.2% 0x000000010ba8a04a
      32   6.8%  66.3%       32   6.8% 0x000000010ba6d35a
      10   2.1%  68.4%       10   2.1% 0x000000010ba8873c
       9   1.9%  70.4%        9   1.9% 0x00007fff63f409da
       6   1.3%  71.6%        6   1.3% 0x000000010ba7feca
       6   1.3%  72.9%        6   1.3% 0x00007fff63f40116
       6   1.3%  74.2%        6   1.3% 0x00007fff63f409f2
       5   1.1%  75.3%        5   1.1% 0x000000010ba6dd4c
       ...

我需要做什么才能让我的函数名包含在pprof输出中?

下面是达到上面这一点的过程,如果它有帮助的话。我使用下面的选项构建我的程序

代码语言:javascript
复制
clang++
"-std=c++17",
"-g",
"-O2",
"...cpp files..."
"-o",
"~/cpp/hmiss/hmiss",
"/usr/local/Cellar/gperftools/2.7/lib/libprofiler.dylib",

我通过运行以下命令启用了gprof的CPU性能分析

DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib CPUPROFILE=hmiss.prof ./hmiss

然后我运行pprof --text ./hmiss hmiss.prof

从对similar question的回答中,我认为可能包括调试符号可能会得到名称,但仅仅使用-g构建程序似乎没有帮助。此外,删除-O2标志也没有任何帮助。

EN

回答 2

Stack Overflow用户

发布于 2020-03-05 05:39:16

使用谷歌的pprof而不是brew的pprof https://github.com/google/pprof

票数 3
EN

Stack Overflow用户

发布于 2021-09-29 11:44:18

我遇到了一个类似的问题,即pprof只显示二进制文件,而没有显示函数名和函数行。此外,产生这些痕迹也需要很长时间。

我发现你不能把它称为go tool pprof,相反,你必须调用~/go/bin/pprof,或者让它直接在你的路径上。

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

https://stackoverflow.com/questions/59331745

复制
相关文章

相似问题

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