ICorDebugUnmanagedCallback::D ebugEvent 方法

通知调试器已触发本机事件。

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::SetUnmanagedBreakpointICorDebugProcess2::ClearUnmanagedBreakpoint 方法添加和删除断点。 这些方法将自动跳过任何带外断点。 因此,被调度的唯一带外断点应该是指令流中已有的原始断点,例如对 Win32 DebugBreak 函数的调用。 请勿尝试使用ICorDebugProcess::ClearCurrentException、ICorDebugProcess::GetThreadContextICorDebugProcess::SetThreadContext 或任何其他调试 API 成员。

要求

平台: 请参阅 .NET 支持的作系统

页眉: CorDebug.idl、CorDebug.h

图书馆: CorGuids.lib

.NET 版本: 自 .NET Framework 1.0 起可用

另请参阅