2014-06-11 105 views
8

我很好奇爲什麼gdb不顯示x86的控制寄存器。我一直在使用gdb和qemu來調試一些內核的東西。我使用信息寄存器和信息全寄存器獲得寄存器值。控制寄存器和gdb

但是,我不能得到cr3和cr2。(一般CRs)。有什麼辦法讓他們。如果沒有,那麼他們爲什麼不提供。

-Thanks

回答

2

UPDATE:

你可以從gdb的檢查控制寄存器的值。問題是您的程序必須以實模式運行(大多數引導加載程序都有一部分可以在真實模式下運行)。

更新來自@Mahouk:

由於我和@Majouk對這個線程相同票數的,你一定要看看他的答案,並嘗試從QEMU獲取寄存器的值。

原來的答案:

我有同樣的問題,似乎GDB沒有這樣的選擇很遺憾。 我不知道爲什麼他們沒有提供,但我可以建議給你一個替代方案。

您可以從Qemu切換到Bochs。是的,它可能有點古怪或更慢,但它有一個非常好的內部調試器。查看帶有 bochs的控制寄存器的命令是creg

欲瞭解更多信息,可以參考Boch的文檔here

祝你好運:)

5

如果您正在使用QEMU,你可以得到所有的寄存器國在在外殼發出論文兩個命令(甚至控制的),你開始QEMU:

  • CTRL-A c(切換到qemu命令接口)
  • 信息寄存器(獲取寄存器狀態)