【发布时间】:2015-08-07 16:50:17
【问题描述】:
我对“perf”记录调用图的能力着迷,并试图了解如何使用它来理解新的代码库。
我在调试模式下编译了代码,并使用以下命令运行单元测试:
性能记录--call-graph dwarf make test
这会创建一个 230 兆的 perf.data。然后我写出调用图
性能报告 --call-graph --stdio > callgraph.txt
这将创建一个 50 兆的文件。
理想情况下,我只想查看属于该项目的代码,而不是内核代码、系统调用、c++ 标准库,甚至是 boost 和任何其他第三方软件。目前我看到像 __GI___dl_iterate_phdr、_Unwind_Find_FDE 等项目。
我喜欢火焰图项目。但是,这种可视化不利于代码理解。是否还有其他项目、文章、想法可能会有所帮助?
【问题讨论】:
-
尝试通过应用程序的“dso”过滤您的报告。并且任何外部参照工具对于理解新的代码库(cscope、lxr、osxr.org、code.metager.de/source、GUI IDE)都会更有用
-
perf report -g对于大型应用程序不应转储到外部文件;它无需重定向即可使用交互式性能报告 TUI 界面工作。还可以尝试github.com/jrfonseca/gprof2dot 脚本将性能报告调用图输出可视化为图片(图);还有 Brendan D. Gregg 的交互式 svg/js FlameGraphs(他经常将许多兆字节的原始报告转储显示为很多 A4 页面)- 性能说明:brendangregg.com/FlameGraphs/cpuflamegraphs.html#perf
标签: linux perf flamegraph