我很好奇爲什麼gdb不顯示x86的控制寄存器。我一直在使用gdb和qemu來調試一些內核的東西。我使用信息寄存器和信息全寄存器獲得寄存器值。控制寄存器和gdb
但是,我不能得到cr3和cr2。(一般CRs)。有什麼辦法讓他們。如果沒有,那麼他們爲什麼不提供。
-Thanks
我很好奇爲什麼gdb不顯示x86的控制寄存器。我一直在使用gdb和qemu來調試一些內核的東西。我使用信息寄存器和信息全寄存器獲得寄存器值。控制寄存器和gdb
但是,我不能得到cr3和cr2。(一般CRs)。有什麼辦法讓他們。如果沒有,那麼他們爲什麼不提供。
-Thanks
UPDATE:
你可以從gdb的檢查控制寄存器的值。問題是您的程序必須以實模式運行(大多數引導加載程序都有一部分可以在真實模式下運行)。
更新來自@Mahouk:
由於我和@Majouk對這個線程相同票數的,你一定要看看他的答案,並嘗試從QEMU獲取寄存器的值。
原來的答案:
我有同樣的問題,似乎GDB沒有這樣的選擇很遺憾。 我不知道爲什麼他們沒有提供,但我可以建議給你一個替代方案。
您可以從Qemu切換到Bochs。是的,它可能有點古怪或更慢,但它有一個非常好的內部調試器。查看帶有 bochs的控制寄存器的命令是creg
。
欲瞭解更多信息,可以參考Boch的文檔here。
祝你好運:)
如果您正在使用QEMU,你可以得到所有的寄存器國在在外殼發出論文兩個命令(甚至控制的),你開始QEMU: