共用方式為


ICorDebugUnmanagedCallback::DebugEvent 方法

通知調試程式已引發原生事件。

語法

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

參數

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

fOutOfBand [in] true如果在發生 Unmanaged 事件之後無法與 Managed 進程狀態互動,直到調試程式呼叫 ICorDebugController::Continue,否則 false為 。

備註

如果要偵錯的線程是 Win32 線程,請勿使用 Win32 偵錯介面的任何成員。 您只能在 Win32 線程上呼叫 ICorDebugController::Continue ,而且只有在繼續超過頻外事件時才呼叫。

DebugEvent 呼未遵循回呼的標準規則。 當您呼叫 DebugEvent時,進程將會處於原始的OS偵錯停止狀態。 進程將不會同步處理。 它會在需要時自動進入同步處理狀態,以滿足 Managed 程式代碼相關信息的要求,這可能會導致其他巢狀回 DebugEvent 呼。

在進程上呼叫 ICorDebugProcess::ClearCurrentException 以忽略例外狀況事件,再繼續進程。 呼叫此方法會傳送DBG_CONTINUE,而不是在繼續要求上DBG_EXCEPTION_NOT_HANDLED,並自動清除頻外斷點和單一步驟例外狀況。 頻外事件可以隨時發生,即使正在偵錯的應用程式出現已停止,且當未處理的頻內事件已經存在時也一樣。

在 .NET Framework 2.0 版中,調試程式應該會立即繼續超過頻外斷點事件。 調試程序應該使用 ICorDebugProcess2::SetUnmanagedBreakpointICorDebugProcess2::ClearUnmanagedBreakpoint 方法來新增和移除斷點。 這些方法會自動略過任何頻外斷點。 因此,唯一分派的頻外斷點應該是已經在指令數據流中的原始斷點,例如對 Win32 DebugBreak 函式的呼叫。 請勿嘗試使用 ICorDebugProcess::ClearCurrentException、ICorDebugProcess::GetThreadContext、ICorDebugProcess::SetThreadContext 或偵錯 API 的任何其他成員

需求

平台:請參閱系統需求

標頭:CorDebug.idl、CorDebug.h

程式庫:CorGuids.lib

.NET Framework 版本: 自 1.0 起提供

另請參閱