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
.
构建自己的工具
我尝试修改 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
.