关于硬件断点调试的问题

yx718 2010-07-29 12:31:09
我们公司基于x86平台开发内核软件。我在学习过程中,我们的调试器采用硬件断点方式来调试。利用x86的dr0-dr3四个调试寄存器来做。
调试的内核已经进入段保护模式,
一种方式:设置某个断点,在断点之前,设置了允许外部中断(汇编的sti指令),让程序跑到断点处,可是实际上查看EFLAGS的IF并没有置起来。
另外一种方式:不设置断点,通过发送NMI指令给cpu,已经跑过了sti指令,此时EFLAGS的IF成功置起来。

第一种方式明显有问题,却不知道问题在哪里。

查阅了许多硬件断点调试的资料,尤其是intel手册卷三,说的是代码走到drx寄存器内的地址后,会发生一个#DE异常,这个异常会导致1号中断的到来么?如果是1号中断,那么中断服务例程是由我们自己处理的还是由调试器来处理?
上面第一种情况可能会是什么原因导致的?

请高手指点,分数不是问题,谢谢!
...全文
145 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2010-07-29
  • 打赏
  • 举报
回复
硬件中断触发后会自动将IF标志复位.

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧