首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用gdbserver和qemu进行调试,如何在控件寄存器cr3上设置监视点

使用gdbserver和qemu进行调试,如何在控件寄存器cr3上设置监视点
EN

Stack Overflow用户
提问于 2015-07-30 08:52:07
回答 1查看 1K关注 0票数 6

我正在调试一个内核,我想知道何时更改了cr3寄存器。我知道如何在通用寄存器上设置一个监视点,比如eax和其他。

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

那么,是否可以从qemu监视器中设置一个监视点呢?如果是,怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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的内部结构有相当多的了解,才能有效地做到这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31719218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档