我正在以下列方式运行“perf”:
perf record -a --call-graph -p some_pid
perf report --call-graph --stdio
然后,我看到了:
1.60% my_binary my_binary [.] my_func
|
--- my_func
|
|--71.10%-- (nil)
| (nil)
|
--28.90%-- 0x17f310000000a
我无法看到哪些函数调用my_func()。我看到“nil”和“0x17f310000000a”。难道我做错了什么?这可能不是调试信息问题,因为显示了一些符号而其他符号未显示。
更多信息:
答案 0 :(得分:25)
确保使用-fno-omit-frame-pointer
gcc 选项编译代码。
答案 1 :(得分:14)
你几乎就在那里,你错过了-G
选项(你可能需要比你系统上安装的更新的性能):
$ perf report --call-graph --stdio -G
来自perf help report
:
-G, --inverted
alias for inverted caller based call graph.
答案 2 :(得分:-1)
您是否尝试使用Zoom进行分析?它可以使用perf,自定义驱动程序或oprofile来收集样本。如果您只想查看一个进程,请尝试“线程时间”配置。
我很想知道Zoom的选项在获取功能信息方面是否比独立性能更好/不同。