これは非常に基本的なように思えます-システムコールをユーザー呼び出しにトレースします-しかし、私はそれに対する答えを見つけることができませんでした.
頻繁なシステムコールを測定する Linux カーネル コードを実行しています。頻度がしきい値を超えている場合、カーネルのバックトレースを出力しています。欠けているのは、syscall のユーザー プロセス バック トレースへの関連付けです。したがって、基本的に必要なのは、syscall (カーネル モード) から、どのユーザー プロセス (および関数) がそれを呼び出しているかを確認する方法です。
カーネルのバックトレースは次のとおりです。
do_gettimeofday+0x43/0xc0
compat_sys_time+0x10/0x40
sysenter_do_call+0x1b/0x67
syscall を呼び出しているプロセスを見つけるにはどうすればよいですか? プロセスはどの状態にありますか? それを達成するために、ptrace/straceメカニズムを使用できますか? この情報はカーネル スタックで利用できますか?
ありがとう。