Linux内核性能分析与跟踪工具深度解析
1. kprobes探针
kprobes是一种强大的内核函数跟踪机制。在Intel x86_64系统中,我们可以方便地提取函数的参数并以十六进制格式输出。例如,要提取 do_nanosleep 函数的前两个参数,可按以下步骤操作:
echo 'p:brendan do_nanosleep hrtimer_sleeper=$arg1 hrtimer_mode=$arg2' >> kprobe_events
echo 1 > events/kprobes/brendan/enable
cat trace_pipe
这里, hrtimer_sleeper=$arg1 和 hrtimer_mode=$arg2 分别提取了函数的第一个和第二个参数,并将其与自定义的名称关联起来。在输出中,这些参数的名称和值会清晰显示。
在Linux 4.20及以后的版本中,我们可以使用 $arg1 、 $arg2 等别名来访问函数参数。而在之前的版本中,则需要使用寄存器名称。例如,等效的kprobe定义可以写成:
echo 'p:brendan do_nanosleep hrtimer_sleeper=%di hrtimer_mode=%si' >> kprobe_events
要
超级会员免费看
订阅专栏 解锁全文
1591

被折叠的 条评论
为什么被折叠?



