gpt4 book ai didi

c++ - MacOSX 上 Google Perftools CPU 分析器中的行号

转载 作者:IT老高 更新时间:2023-10-28 23:00:27 33 4
gpt4 key购买 nike

我正在尝试在 MacOSX 上分析一些 C++ 程序。所以我构建了 google-perftools,编写了一个程序,使用 MacPorts g++ 4.7 编译,带有 -g 编译器标志,并链接到 libprofiler。然后我跑了:

CPUPROFILE=cpu.profile ./a.out

然后我运行 pprof 来生成输出:

[hidden ~]$ pprof --text ./a.out cpu.profile 
Using local file ./a.out.
Using local file cpu.profile.
Removing __sigtramp from all stack traces.
Total: 282 samples
107 37.9% 37.9% 107 37.9% 0x000000010d72229e
16 5.7% 43.6% 16 5.7% 0x000000010d721a5f
12 4.3% 47.9% 12 4.3% 0x000000010d721de8
11 3.9% 51.8% 11 3.9% 0x000000010d721a4e
9 3.2% 55.0% 9 3.2% 0x000000010d721e13
8 2.8% 57.8% 8 2.8% 0x000000010d721a64
7 2.5% 60.3% 7 2.5% 0x000000010d7222f0
6 2.1% 62.4% 6 2.1% 0x000000010d721a4c
6 2.1% 64.5% 6 2.1% 0x000000010d721b1f
6 2.1% 66.7% 6 2.1% 0x000000010d721e0c
5 1.8% 68.4% 5 1.8% 0x000000010d721fba
......

perftools 似乎没有将地址转换为函数名称。

有人知道我在这里缺少什么吗?我应该怎么做才能让分析器生成正确的结果。

编辑:更多信息:这不是 pprof 或 google-perftools 的问题,而是更多类似 gcc 或 macosx 的问题,因为 Instrument.app 还显示地址而不是行号。我不熟悉调试符号在 Mac OS X 下是如何工作的,所以我宁愿认为它是我在这里遗漏的东西,而不是 gcc 或 Mac OS X 中的错误。我想知道是否有人可以提供一些关于调试信息如何工作的提示适用于 Mac OS X。

最佳答案

这似乎与 OS X 10.5 中引入的地址空间布局随机化(ASLR)有关

我已提交 issue #562在 gperftools 问题跟踪器上。您可以通过传递 -Wl,-no_pie 来禁用 ASLR。

另外,如果你不是一定要使用gperftoolsInstruments(自带Xcode)值得一试。

关于c++ - MacOSX 上 Google Perftools CPU 分析器中的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562280/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com