使用性能报告从特定的二进制文件中提取符号

时间:2019-01-01 20:44:09

标签: linux perf

我正在收集数据

perf record -o "filename.here" -a --call-graph dwarf -p `pidof binary.here`

并用

阅读
perf report -i "filename.here"

但是,当我的实时二进制文件被更改/重建时(由于我一直在进行更新,因为它正在进行中,因此我不断对其进行更新),此操作停止工作,并说“找不到具有ID为XXX的二进制文件”。我保存的是收集数据的旧二进制文件,但是看来perf report无法显式加载特定的二进制文件(有--symfs选项,但那是要查找所有库中的所有调试符号/ etc,这也不是解决方案。

另一种解决方案是停止实时二进制文件,而不是复制粘贴备份的二进制文件,但是我不能仅仅为了做到这一点而停止实时二进制文件。另一个解决方案是将备份的二进制文件复制到其他服务器上,这样我就可以将其存储在perf尝试搜索的同一路径中。

有没有更好的解决方案?

1 个答案:

答案 0 :(得分:2)

该消息:

binary with build id XXX cannot be found

之所以在这里是因为perf record将在记录阶段结束时保存带有示例的二进制文件的副本,因此,如果以后进行更新,没问题,该特定二进制文件将保存在{{1 }},这就是~/.debug/.build/id/AA/BBCCDDEEFF001122和其他使用者的查询方式。

这是弄清楚为什么找不到该构建ID的问题。您是否在同一台计算机上同时使用“性能记录”和“性能报告”?

还有:

perf report

可以吗?

在〜/ .debug /目录中查找该文件。

perf buildid-list -i filename.here

会告诉您二进制文件的buildid。