gpt4 book ai didi

c - perf record如何获取目标进程指令的虚拟内存地址以及perf使用什么数据结构来存储它

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:58 32 4
gpt4 key购买 nike

我正在阅读 perf 的源代码并尝试理解 perf record 如何获取触发 perf 计数的目标进程指令的虚拟内存地址(例如虚拟call test的地址,即被perf report注解监视的汇编代码)。 perf使用什么数据结构来存储使perf-event发生并触发计数器的指令的虚拟地址?

最佳答案

为了获取示例的指令指针,您必须在 perf_attr.sample_type 中包含 PERF_SAMPLE_IP 以用于 perf_event_open 调用。这将在 PERF_RECORD_SAMPLE 事件的结构中包含 ip 字段,您可以从 mmap 环形缓冲区中读取这些事件。有关详细信息,请参阅联机帮助页。

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 - perf record如何获取目标进程指令的虚拟内存地址以及perf使用什么数据结构来存储它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47846868/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com