通知调试器本机事件已激发。
HRESULT DebugEvent (
[in] LPDEBUG_EVENT pDebugEvent,
[in] BOOL fOutOfBand
);
参数
pDebugEvent
[in] 一个指向本机事件的指针。fOutOfBand
[in] 如果在非托管事件发生后在调试器调用 ICorDebugController::Continue 之前无法与托管进程状态进行交互,则为 true;否则为 false。
备注
如果被调试的线程是 Win32 线程,则不要使用 Win32 调试接口的任何成员。 只能对 Win32 线程调用并且只有在经过带外事件后继续时才能调用 ICorDebugController::Continue。
DebugEvent 回调不遵循回调的标准规则。 调用 DebugEvent 时,进程将处于原始的 OS 调试停止状态。 该进程将不被同步。 它将在需要时自动进入同步状态,以满足对有关托管代码的信息的请求,这可能导致其他嵌套的 DebugEvent 回调。
对进程调用 ICorDebugProcess::ClearCurrentException,在继续该进程之前忽略异常事件。 调用此方法将在继续请求时发送 DBG_CONTINUE 而不是 DBG_EXCEPTION_NOT_HANDLED,并自动清除带外断点和单步执行异常。 带外事件可以随时发生,甚至在被调试的应用程序似乎停止以及已存在未处理的带内事件时也会发生。
在 .NET Framework 2.0 版中,调试器在经过带外断点事件后应立即继续。 调试器应使用 ICorDebugProcess2::SetUnmanagedBreakpoint 和 ICorDebugProcess2::ClearUnmanagedBreakpoint 方法来添加或移除断点。 这些方法将自动跳过所有带外断点。 因此,被调度的带外断点只应是已在指令流中的原始断点,例如对 Win32 DebugBreak 函数的调用。 不要尝试使用 ICorDebugProcess::ClearCurrentException、ICorDebugProcess::GetThreadContext、ICorDebugProcess::SetThreadContext 或调试 API 的任何其他成员。
要求
**平台:**请参见 .NET Framework 系统要求。
头文件: CorDebug.idl、CorDebug.h
**库:**CorGuids.lib
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0