C变量分配的Perf探测事件

时间:2019-03-15 06:41:39

标签: linux-kernel libc perf

我一直在将perf probemalloc一起使用,但是似乎找不到适合于变量分配发生时的perf事件。有这样的事件吗?

理想情况下,当发生类似int var = 17;之类的事件时,我缺少一些相应的事件吗?在变量的实例化之外,但是值的实际赋值和每个连续的更改。

1 个答案:

答案 0 :(得分:2)

是的,这可以通过硬件断点事件来实现。如果您知道地址,perf record就支持:

  

\ mem:addr [/ len] [:access]形式的硬件断点事件   其中addr是要插入的内存中的地址。访问是   内存访问类型(读取,                  可以执行以下操作:\ mem:addr [:[r] [w] [x]]。 len是范围,字节数从   指定的地址,断点将覆盖该地址。如果你想                  配置文件的读写访问为0x1000,只需设置mem:0x1000:rw。如果要在[0x1000〜1008)中配置写访问权限,   只需设置mem:0x1000 / 8:w。

可能难以事先获取内存地址。您还可以在程序内部使用perf_event_open,但随后需要解析程序中的性能样本记录。