我一直在将perf probe
与malloc
一起使用,但是似乎找不到适合于变量分配发生时的perf事件。有这样的事件吗?
理想情况下,当发生类似int var = 17;
之类的事件时,我缺少一些相应的事件吗?在变量的实例化之外,但是值的实际赋值和每个连续的更改。
答案 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
,但随后需要解析程序中的性能样本记录。