我很好奇为什么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: