关于硬件断点调试的问题
yx718 2010-07-29 12:31:09 我们公司基于x86平台开发内核软件。我在学习过程中,我们的调试器采用硬件断点方式来调试。利用x86的dr0-dr3四个调试寄存器来做。
调试的内核已经进入段保护模式,
一种方式:设置某个断点,在断点之前,设置了允许外部中断(汇编的sti指令),让程序跑到断点处,可是实际上查看EFLAGS的IF并没有置起来。
另外一种方式:不设置断点,通过发送NMI指令给cpu,已经跑过了sti指令,此时EFLAGS的IF成功置起来。
第一种方式明显有问题,却不知道问题在哪里。
查阅了许多硬件断点调试的资料,尤其是intel手册卷三,说的是代码走到drx寄存器内的地址后,会发生一个#DE异常,这个异常会导致1号中断的到来么?如果是1号中断,那么中断服务例程是由我们自己处理的还是由调试器来处理?
上面第一种情况可能会是什么原因导致的?
请高手指点,分数不是问题,谢谢!