私はいくつかの実験を行っており、システムコール中にスタックに保存されているもの (ユーザーランドプロセスの保存された状態) を確認できるようにしたいと考えています。http://lxr.linux.no/#linux+v2.6.30.1/arch/x86/kernel/entry_32.Sによると、レジスタのさまざまな値がスタック ポインタの特定のオフセットに保存されていることがわかります。これは、スタックに保存されているものを調べるために使用しようとしているコードです (これは、私が作成したカスタム システム コールにあります)。
asm("movl 0x1C(%esp), %ecx");
asm("movl %%ecx, %0" : "=r" (value));
value は unsigned long です。
現時点では、この値は予期されたものではありません (ds のユーザー値として 0 が保存されていることが示されています)。
スタック ポインターのオフセットに正しくアクセスしていますか?
別の可能性として、GDB などのデバッガーを使用して、カーネル内でスタックの内容を調べることはできますか? 私はデバッグにあまり詳しくなく、カーネル内のコードをデバッグする方法がわかりません。どんな助けでも大歓迎です。