2015-10-13 3 views
1

От kprobe document:Как использовать регистры в kprobe?

echo 'p:myprobe do_sys_open dfd=%ax filename=%dx flags=%cx mode=+4($stack)' > /sys/kernel/debug/tracing/kprobe_events 

За мое понимание, на X86_64 платформе, аргументы должны быть переданы в регистры (см X86_64 syscalls). Так что я думаю, добавив зонд хотел это:

echo 'p:myprobe do_sys_open dfd=%rdi filename=%rsi flags=%rdx mode=%rcx' > /sys/kernel/debug/tracing/kprobe_events 

Но выполнить вышеуказанное заявление, bash жалуется:

-bash: echo: write error: Invalid argument 

Так что мои вопросы: как использовать регистры в kprobe? Какие регистры действительны?

ответ

2

После обсуждения с kprobe сопровождающими, я получаю ответ:

ftrace-kprobe интерфейса не принимает префикс как битовую «rax» вместо этого он принимает «ax». Битовая ширина автоматически выбирается по архитектуре. Поэтому, пожалуйста, удалите 'r' из всех аргументов. Если вы хотите получить доступ к eax или ax, вы можете использовать typecast, например %ax:u32.

Смежные вопросы