通知调试器已触发本机事件。
Syntax
HRESULT DebugEvent (
[in] LPDEBUG_EVENT pDebugEvent,
[in] BOOL fOutOfBand
);
参数
pDebugEvent [in]指向本机事件的指针。
fOutOfBand [in] true如果在发生非托管事件后无法与托管进程状态交互,直到调试器调用 ICorDebugController::Continue;否则为 false。
注解
如果正在调试的线程是 Win32 线程,请不要使用 Win32 调试接口的任何成员。 只能在 Win32 线程上调用 ICorDebugController::Continue ,并且仅在继续超过带外事件时调用。
回调 DebugEvent 不遵循回调的标准规则。 调用 DebugEvent时,进程将处于原始的 OS 调试停止状态。 进程不会同步。 如果需要满足有关托管代码的信息的请求,它将自动进入同步状态,这可能会导致其他嵌套 DebugEvent 回调。
调用 进程上的 ICorDebugProcess::ClearCurrentException 以在继续该过程之前忽略异常事件。 调用此方法会发送DBG_CONTINUE而不是在继续请求上DBG_EXCEPTION_NOT_HANDLED,并自动清除带外断点和单步异常。 带外事件可以随时出现,即使正在调试的应用程序已停止,以及存在未完成的带内事件时也是如此。
调试器应立即继续超过带外断点事件。 调试器应使用 ICorDebugProcess2::SetUnmanagedBreakpoint 和 ICorDebugProcess2::ClearUnmanagedBreakpoint 方法添加和删除断点。 这些方法将自动跳过任何带外断点。 因此,被调度的唯一带外断点应该是指令流中已有的原始断点,例如对 Win32 DebugBreak 函数的调用。 请勿尝试使用ICorDebugProcess::ClearCurrentException、ICorDebugProcess::GetThreadContext、ICorDebugProcess::SetThreadContext 或任何其他调试 API 成员。
要求
平台: 请参阅 .NET 支持的作系统。
页眉: CorDebug.idl、CorDebug.h
图书馆: CorGuids.lib
.NET 版本: 自 .NET Framework 1.0 起可用