共用方式為


ICorDebugUnmanagedCallback::DebugEvent 方法

更新:2007 年 11 月

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

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

**程式庫:**CorGuids.lib

**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

請參閱

參考

ICorDebugUnmanagedCallback