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::SetUnmanagedBreakpoint 和 ICorDebugProcess2::ClearUnmanagedBreakpoint 方法來新增和移除斷點。 這些方法會自動略過任何頻外斷點。 因此,唯一分派的頻外斷點應該是已經在指令數據流中的原始斷點,例如對 Win32 DebugBreak
函式的呼叫。 請勿嘗試使用 ICorDebugProcess::ClearCurrentException
、ICorDebugProcess::GetThreadContext、ICorDebugProcess::SetThreadContext 或偵錯 API 的任何其他成員。
需求
平台:請參閱系統需求。
標頭:CorDebug.idl、CorDebug.h
程式庫:CorGuids.lib
.NET Framework 版本: 自 1.0 起提供