1.windows定义了9类调试事件
EXCEPTION_DEBUG_EVENT(1) //异常
CREATE_THREAD_DEBUG_EVENT(2)
CREATE_PROCESS_DEBUG_EVENT(3)
EXIT_THREAD_DEBUG_EVENT(4)
EXIT_PROCESS_DEBUG_EVENT(5)
LOAD_DLL_DEBUG_EVENT(6)
UNLOAD_DLL_DEBUG_EVENT(7)
OUTPUT_DEBUG_STRING_EVENT(8)
RIP_EVENT(9)
2.两轮机会
只有异常有2轮处理机会,异常以外的其他调试事件只有一次
对于每个异常,windows都会试图先分发给调试器。
第一次如果调试器返回没有处理异常,则交给程序中的异常处理器来处理
第二次继续交给调试器,返回没有处理,系统提示application error,终止程序或蓝屏(在内核模块)。
3.GN/GH
GH 用来强制返回已经处理
GN 强制返回没有处理