共用方式為


ICorDebugUnmanagedCallback::DebugEvent 方法

告知偵錯工具,已經引發原生事件。

HRESULT DebugEvent (
    [in] LPDEBUG_EVENT  pDebugEvent,
    [in] BOOL           fOutOfBand
);

參數

  • pDebugEvent
    [in] 原生事件的指標。

  • fOutOfBand
    [in] 如果在 Unmanaged 事件發生之後,在偵錯工具呼叫 ICorDebugController::Continue 之前無法與 Managed 處理序狀態互動,則為 true,否則為 false。

備註

如果所偵錯的執行緒為 Win32 執行緒,請勿使用 Win32 偵錯介面的任何成員。 您只有在 Win32 執行緒上,以及 Out-of-Band 事件過後繼續時,才能呼叫 ICorDebugController::Continue

DebugEvent 回呼不會依照標準的回呼規則執行。 當您呼叫 DebugEvent 時,處理序會處於未經處理、OS 偵錯停止的狀態。 而且不會同步處理此處理序。 當您必須滿足 Managed 程式碼資訊的要求時,它會自動進入同步狀態,這可能造成其他巢狀的 DebugEvent 回呼。

繼續處理序之前,在處理序上呼叫 ICorDebugProcess::ClearCurrentException 以忽略例外狀況事件。 呼叫這個方法會在繼續要求上傳送 DBG_CONTINUE 而非 DBG_EXCEPTION_NOT_HANDLED,而且會自動清除 Out-of-Band 中斷點和單步例外狀況。 即使在所偵錯的應用程式看起來已停止以及未完成的 In-Band 事件已存在時,Out-of-Band 事件隨時都可能會發生。

在 .NET Framework 2.0 版中,偵錯工具應在 Out-of-Band 中斷點事件過後立即繼續。 偵錯工具應該使用 ICorDebugProcess2::SetUnmanagedBreakpointICorDebugProcess2::ClearUnmanagedBreakpoint 方法來新增及移除中斷點。 這些方法會自動略過任何 Out-of-Band 中斷點。 因此,會被分派的唯一 Out-of-Band 中斷點應該是已在指令資料流中未經處理的中斷點,例如 Win32 DebugBreak 函式的呼叫。 請勿嘗試使用 ICorDebugProcess::ClearCurrentExceptionICorDebugProcess::GetThreadContextICorDebugProcess::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

請參閱

參考

ICorDebugUnmanagedCallback 介面