perf如何记录存储汇编代码

how do perf record store assembly code

我尝试修改 perf record 以处理目标 process/program 的汇编代码。因此,我想知道数据结构在哪里使用perf来存储汇编代码和计算目标process/program的位置?

一般perf record写完后会写一个'perf.data',我们可以用perf record,按'Enter',选择'annotate',看汇编代码目标 process/program。通过这种方式,我们可以得到哪一行代码是计数的原因。

perf record 不以任何方式处理汇编,perf.data 中也不存储任何汇编或指令。 perf record 记录包含指令指针的事件。在 perf report 和其他分析工具中,这些是使用 MMAP 信息在 o DSO 内转换的地址。 perf 知道相应二进制文件的文件名 - 请注意,如果自记录以来发生更改,它可能会使用 .debug/.build-id 下那些二进制文件的副本来使用正确的版本。 Perf 在文件上运行 objdump 以进行反汇编并向您显示带注释的视图。

这回答了你的问题,但没有任何进一步的信息,不可能真正帮助你实现你真正想做的事情。您还可以基于 perf_event_open.

构建自己的工具