我正在做一些實驗,希望能夠看到系統調用期間保存在堆棧中的內容(用戶登陸過程的保存狀態)。根據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。
截至目前,這個值不是預期的值(它顯示0爲ds的用戶值保存)。
我正確訪問堆棧指針的偏移量嗎?
另一種可能性是我可以使用諸如GDB的調試器來檢查內核中的堆棧內容嗎?我沒有太多廣泛的用於調試,也不知道如何在內核中調試代碼。任何幫助深表感謝。