c/c++语言开发共享perf记录如何获取目标进程的指令的虚拟内存地址以及用于存储它的数据结构

我正在阅读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

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐