windows在处理调试异常的优先级是多高?intel CPU说高于所有硬件中断,那么也就是说CPU执行异常处理时不可能切换线程了。我于是把异常处理函数DbgpfForwadException改成无限循环,结果发现系统还能工作,只是很卡,而且还能单步这个异常中断到内核调试器,说明还是有其他中断抢占目前的调试异常处理。另外在调试处理中最后居然调用了KeWaitForSingleObject函数,这更说明了调试异常处理是会被抢占的,单intel CPU没有官方说明,这是怎么回事呢?它只说了同时发生先处理调试异常。
期待您的回复
很好的问题,思考的很深入。
原因是CPU手册中的定义的优先级是指异常和中断的报告顺序,引用下原文:
If more than one exception or interrupt is pending at an instruction boundary, the processor services them in a predictable order.