gpt4 book ai didi

gdb - 使用 gdbserver 和 qemu 进行调试,如何在控制寄存器 cr3 上设置观察点

转载 作者:行者123 更新时间:2023-12-04 20:38:03 27 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

关于gdb - 使用 gdbserver 和 qemu 进行调试,如何在控制寄存器 cr3 上设置观察点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com