1

kprobe ドキュメントから:

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

私の理解では、プラットフォームでは、引数をレジスタに渡す必要があります ( X86_64 syscallsX86_64を参照してください)。したがって、プローブを追加すると、次のようになるはずです。

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?有効なレジスタはどれですか?

4

1 に答える 1

2

メンテナと話し合った後kprobe、私は答えを得ました:

ftrace-kprobeインターフェイスは、' ' のようなビット幅プレフィックスを受け入れず、rax代わりに ' ' を受け入れますax。ビット幅はアーキテクチャによって自動的に選択されます。したがってr、すべての引数から ' ' を削除してください。eaxまたはにアクセスしたい場合はax、 as のように型キャストを使用できます%ax:u32

于 2015-11-05T03:40:24.563 に答える