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::SetUnmanagedBreakpoint 和 ICorDebugProcess2::ClearUnmanagedBreakpoint 方法來新增及移除中斷點。這些方法會自動略過任何 Out-of-Band 中斷點。因此,會被分派的唯一 Out-of-Band 中斷點應該是已在指令資料流中未經處理的中斷點,例如 Win32 DebugBreak 函式的呼叫。請勿嘗試使用 ICorDebugProcess::ClearCurrentException、ICorDebugProcess::GetThreadContext、ICorDebugProcess::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