以下kprobe_based事件示例运行良好:
$ echo 'p:myprobe do_sys_open' > /sys/kernel/debug/tracing/kprobe_events但是,添加获取参数不起作用:
$ echo 'p:myprobe do_sys_open dfd=%ax filename=%dx flags=%cx mode=+4($stack)' > /sys/kernel/debug/tracing/kprobe_events
Invalid argument我觉得问题是%ax,%dx.他们的意思是什么?我怎样才能让这段代码工作呢?
发布于 2018-05-12 08:45:20
%ax、%dx等指的是系统的寄存器。正如文献资料中所暗示的那样,如果您的体系结构不是x86,则需要更改这些内容:
注意,哪些寄存器/堆栈条目分配给每个函数参数取决于特定于arch的ABI。
因为看起来像是在arm上(raspberry-pi标记),所以可以使用以下方法:
$ echo 'p:myprobe do_sys_open dfd=%r0 filename=%r1 flags=%r2 mode=%r3' > /sys/kernel/debug/tracing/kprobe_eventshttps://stackoverflow.com/questions/50266978
复制相似问题