2014-06-11 103 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命令接口)
  • 信息寄存器(获取寄存器状态)