我正在调试一个内核,我想知道何时更改了cr3寄存器。我知道如何在通用寄存器上设置一个监视点,比如eax和其他。
问题是,由于gdb无法访问控制寄存器,因此在cr3上设置一个监视点不起作用。
那么,是否可以从qemu监视器中设置一个监视点呢?如果是,怎么做?
发布于 2015-08-04 17:18:11
抱歉,没有办法在QEMU监视器上做这件事。(如果您查看QEMU源代码中的目标-i 386/helper.c: CPU _x86_update_ CR3 (),您将看到它不会做任何会通知任何人有关CR3更新的事情,它只会将新值放入内部CPU状态结构中。)
对于这种情况,您可以做的最好是使用两个调试器运行(一个连接到QEMU的gdbstub与来宾对话,另一个直接调试QEMU本身)。然后,您可以在QEMU中的cpu_x86_update_cr3()上放置一个断点,然后查看发生了什么。你需要对QEMU的内部结构有相当多的了解,才能有效地做到这一点。
https://stackoverflow.com/questions/31719218
复制相似问题