关于STATUS_WX86_BREAKPOINT(0x4000001F)异常
简介
STATUS_WX86_BREAKPOINT,值为0x4000001F,称为中断指令异常,表示在系统未附加内核调试器时遇到断点或断言。其定义如下:
/
// MessageId: STATUS_WX86_BREAKPOINT
//
// MessageText:
//
// Exception status code used by Win32 x86 emulation subsystem.
//
#define STATUS_WX86_BREAKPOINT ((NTSTATUS)0x4000001FL)
说明
当断点(int 3)异常来自在WOW64模式下执行的代码(64位Windows中的32位代码)时,64位调试器确实获得了状态WX86。从64位代码中断点时-状态中断点。同样,在单步异常中,如果此异常来自64位代码,64位调试器将获得STATUS_single_step;如果异常来自WOW64代码,则获得STATUS_WX86_single_step。
可以像处理STATUS_BREAKPOINT(0x80000003)一样处理它。WX86提供了从哪个模式(WOW64或本机)中断的附加信息。但在这两种情况下,这都是断点异常。以及如何处理它的逻辑。但是,这是您的选择,决定如何处理断点、单步或其他异常。
还要注意,STATUS_WX86_BREAKPOINT和STATUS_WX86_SINGLE_STEP只得到64位调试器。32位调试器始终获取状态断点,64位调试器获取状态断点,而x64调试器获取状态断点时不获取任何信息。例如,在WOW64进程启动时-64位调试器获取了2个断点-第一个状态断点来自64位模式(在64位ntdll.LdrpDoDebugBreak中),然后是状态断点来自32位ntdll.LdrpDoDebugBreak。而32位调试器只有第二个断点(来自32位代码)具有状态断点。
异常结构填充
ExceptionAddress: 03264043 (libcef!GetHandleVerifier+0x00845ba3)
ExceptionCode: 4000001f (WOW64 breakpoint)
ExceptionFlags: 00000001
NumberParameters: 1
Parameter[0]: 00000000