我正在阅读perf的源代码,并尝试理解perf record
如何获取触发perf计数的目标进程的指令的虚拟内存地址(例如, call test
的虚拟地址,即汇编代码监视通过perf report
的注释)。 什么数据结构用于存储使perf事件发生并触发计数器的指令的虚拟地址?
要获取样本的指令指针,必须在perf_attr.sample_type
包含PERF_SAMPLE_IP
以进行perf_event_open
调用。 这将包括您可以从mmap
ringbuffer读取的PERF_RECORD_SAMPLE
事件的结构中的ip
字段。 有关详细信息,请参见联机帮助
PERF_RECORD_SAMPLE This record indicates a sample. struct { struct perf_event_header header; u64 sample_id; /* if PERF_SAMPLE_IDENTIFIER */ u64 ip; /* if PERF_SAMPLE_IP */ u32 pid, tid; /* if PERF_SAMPLE_TID */ u64 time; /* if PERF_SAMPLE_TIME */ ...
以上就是c/c++开发分享perf记录如何获取目标进程的指令的虚拟内存地址以及用于存储它的数据结构相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522231.html