我的 C++ 程序消耗大量 CPU,并且在运行时消耗更多。我使用 Google 性能工具来分析 CPU 使用情况,这就是我得到的结果:
(pprof) top
Total: 1343 samples
1330 99.0% 99.0% 1330 99.0% 0x0000000801dcb11c
7 0.5% 99.6% 7 0.5% 0x0000000801dcb11e
4 0.3% 99.9% 4 0.3% program::threadWorker
1 0.1% 99.9% 1 0.1% 0x0000000801dcb110
1 0.1% 100.0% 1 0.1% 0x00007fffffffffc0
然而,这里显示的 5 个进程中只有 1 个是实际的函数名称;其余的是地址。我怎样才能知道这些地址属于什么内容? (当然我最感兴趣的是上面显示的第一个地址)
编辑:这就是我运行探查器的方式:
env CPUPROFILE=prof.out ./a.out
[kill program]
pprof ./a.out prof.out
另外,我通过代码检查找到了根本原因。但让探查器找出罪魁祸首的函数而不是地址仍然是件好事。
是否有可能您在 google-pprof 中加载结果时没有指定可执行文件?
我将其运行为:
$ google-pprof executable /tmp/executable.hprof --text | less
并且可以很好地看到函数名称。或者当您运行 google-pprof 时,这些方法位于某个共享库中而不是在您的路径中?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)