【问题标题】:Debugging with gdbserver and qemu, how to set watchpoint on a control register, cr3使用 gdbserver 和 qemu 进行调试,如何在控制寄存器 cr3 上设置观察点
【发布时间】:2015-07-30 08:52:07
【问题描述】:

我正在调试内核,我想知道 cr3 寄存器何时更改。我知道如何在 eax 等通用寄存器上设置观察点。

问题是,由于 gdb 无权访问控制寄存器,因此在 cr3 上设置观察点不起作用。

那么,是否可以从 qemu 监视器设置观察点?如果是,怎么做?

【问题讨论】:

    标签: gdb kernel breakpoints qemu watchpoint


    【解决方案1】:

    抱歉,QEMU 监视器无法执行此操作。 (如果您查看 QEMU 源代码中的 target-i386/helper.c:cpu_x86_update_cr3() ,您会发现它没有做任何通知任何人关于 CR3 更新的事情,它只是将新值放入内部 CPU 状态结构。)

    你能做的最好的事情就是运行两个调试器(一个连接到 QEMU 的 gdbstub 以与来宾对话,一个直接调试 QEMU 本身)。然后你可以在 QEMU 中的 cpu_x86_update_cr3() 上放一个断点,然后看看发生了什么。不过,您需要对 QEMU 的内部有相当多的了解才能有效地做到这一点……

    【讨论】:

      猜你喜欢
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2020-07-16
      • 2017-02-07
      • 2011-03-29
      相关资源
      最近更新 更多