调试器引擎提供用于监视和响应目标中的事件的设施。 当事件发生时,引擎会暂停目标(通常只是短暂的暂停),然后通知所有客户端,此后客户端会指示引擎目标的执行应如何继续。
若要通知客户端事件,引擎将调用向客户端注册的事件回调对象。 该引擎为每个事件回调提供事件的详细信息,事件回调指示引擎如何在目标中继续执行。 当不同的事件回调提供冲突指令时,引擎将处理优先级最高的指令(见 DEBUG_STATUS_XXX),这通常意味着选择涉及最低执行目标的指令。
注意 当事件回调处理事件时,目标将被暂停,调试会话可以访问;但是,由于引擎在 WaitForEvent 调用期间显式等待事件,或者通过执行 g(Go)或 p(单步)等命令隐式等待事件——事件回调无法调用 WaitForEvent,并且如果它尝试执行任何导致调试器执行的命令(例如 g(Go)或 p(单步)),则引擎会将这些命令解释为后续行动的指令。
事件筛选器
调试器引擎还提供 事件筛选器,这是基本事件监视的更简单的替代方法。 事件筛选器提供了一些简单的规则,用于指定是应将事件打印到调试器的输出流中还是中断到调试器中。 它们还可用于在事件发生时执行调试器命令。
其他信息
有关监视事件的详细信息,请参阅 “监视事件”。