【问题标题】:how do perf record store assembly codeperf记录如何存储汇编代码
【发布时间】:2017-12-13 01:50:10
【问题描述】:

我尝试修改perf record 来处理目标进程/程序的汇编代码。因此,我想知道perf在哪里存储目标进程/程序的汇编代码和计数位置的数据结构

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

【问题讨论】:

  • 您确实需要为您想要实现的目标添加更多细节。这个问题很不清楚。
  • 谢谢。我尝试修改perf源代码让'perf record'命令可以实时输出目标进度/程序的汇编代码的计数器编号和计数器位置,而不是rusult文件perf.data

标签: assembly record perf


【解决方案1】:

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

这回答了您的问题,但如果没有任何进一步的信息,就不可能真正帮助您实现您真正想做的事情。你也可以基于perf_event_open构建自己的工具。

【讨论】:

  • 就像你说的perf record记录的事件包含指令指针,那么perf用什么数据结构或者哪里来存储指令指针的内容,比如虚拟地址?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-15
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多