共用方式為


ICorDebugManagedCallback

更新:2007 年 11 月

提供方法來處理偵錯工具回呼。

interface ICorDebugManagedCallback : IUnknown {
    HRESULT _stdcall Break(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* thread);
    HRESULT _stdcall Breakpoint(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugBreakpoint* pBreakpoint);
    HRESULT _stdcall BreakpointSetError(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugBreakpoint* pBreakpoint, 
                    [in] unsigned long dwError);
    HRESULT _stdcall ControlCTrap([in] ICorDebugProcess* pProcess);
    HRESULT _stdcall CreateAppDomain(
                    [in] ICorDebugProcess* pProcess, 
                    [in] ICorDebugAppDomain* pAppDomain);
    HRESULT _stdcall CreateProcess([in] ICorDebugProcess* pProcess);
    HRESULT _stdcall CreateThread(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* thread);
    HRESULT _stdcall DebuggerError(
                    [in] ICorDebugProcess* pProcess, 
                    [in] HRESULT errorHR, 
                    [in] unsigned long errorCode);
    HRESULT _stdcall EditAndContinueRemap(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugFunction* pFunction, 
                    [in] long fAccurate);
    HRESULT _stdcall EvalComplete(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugEval* pEval);
    HRESULT _stdcall EvalException(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugEval* pEval);
    HRESULT _stdcall Exception(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] long unhandled);
    HRESULT _stdcall ExitAppDomain(
                    [in] ICorDebugProcess* pProcess, 
                    [in] ICorDebugAppDomain* pAppDomain);
    HRESULT _stdcall ExitProcess([in] ICorDebugProcess* pProcess);
    HRESULT _stdcall ExitThread(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* thread);
    HRESULT _stdcall LoadAssembly(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugAssembly* pAssembly);
    HRESULT _stdcall LoadClass(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugClass* c);
    HRESULT _stdcall LoadModule(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugModule* pModule);
    HRESULT _stdcall LogMessage(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] long lLevel, 
                    [in] unsigned short* pLogSwitchName, 
                    [in] unsigned short* pMessage);
    HRESULT _stdcall LogSwitch(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] long lLevel, 
                    [in] unsigned long ulReason, 
                    [in] unsigned short* pLogSwitchName, 
                    [in] unsigned short* pParentName);
    HRESULT _stdcall NameChange(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread);
    HRESULT _stdcall StepComplete(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugThread* pThread, 
                    [in] ICorDebugStepper* pStepper, 
                    [in] CorDebugStepReason reason);
    HRESULT _stdcall UnloadAssembly(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugAssembly* pAssembly);
    HRESULT _stdcall UnloadClass(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugClass* c);
    HRESULT _stdcall UnloadModule(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugModule* pModule);
    HRESULT _stdcall UpdateModuleSymbols(
                    [in] ICorDebugAppDomain* pAppDomain, 
                    [in] ICorDebugModule* pModule, 
                    [in] IStream* pSymbolStream);
};

方法

方法

描述

ICorDebugManagedCallback::Break 方法

當執行程式碼資料流中的 Break 指令時,會告知偵錯工具。

ICorDebugManagedCallback::Breakpoint 方法

當遇到中斷點時,會告知偵錯工具。

ICorDebugManagedCallback::BreakpointSetError 方法

告知偵錯工具,Common Language Runtime (CLR) 無法正確繫結以 Just-In-Time (JIT) 編譯函式之前所設定的中斷點。

ICorDebugManagedCallback::ControlCTrap 方法

告知偵錯工具 CTRL+C 受陷於偵錯中的處理序。

ICorDebugManagedCallback::CreateAppDomain 方法

告知偵錯工具,已建立應用程式定義域。

ICorDebugManagedCallback::CreateProcess 方法

當處理序初次附加或啟動時,會告知偵錯工具。

ICorDebugManagedCallback::CreateThread 方法

告知偵錯工具,執行緒已開始執行 Managed 程式碼。

ICorDebugManagedCallback::DebuggerError 方法

告知偵錯工具,在嘗試處理來自 CLR 的事件時發生錯誤。

ICorDebugManagedCallback::EditAndContinueRemap 方法

已被取代。通知偵錯工具,重新對應事件已傳送至 IDE。

ICorDebugManagedCallback::EvalComplete 方法

告知偵錯工具,已經完成評估。

ICorDebugManagedCallback::EvalException 方法

告知偵錯工具,已結束評估並發生未處理的例外狀況。

ICorDebugManagedCallback::Exception 方法

告知偵錯工具,已從 Managed 程式碼擲回例外狀況。

ICorDebugManagedCallback::ExitAppDomain 方法

告知偵錯工具,應用程式定義域已結束。

ICorDebugManagedCallback::ExitProcess 方法

告知偵錯工具,處理序已結束。

ICorDebugManagedCallback::ExitThread 方法

告知偵錯工具,執行 Managed 程式碼的執行緒已結束。

ICorDebugManagedCallback::LoadAssembly 方法

告知偵錯工具,已成功載入 CLR 組件。

ICorDebugManagedCallback::LoadClass 方法

告知偵錯工具,已載入類別。

ICorDebugManagedCallback::LoadModule 方法

告知偵錯工具,已成功載入 CLR 模組。

ICorDebugManagedCallback::LogMessage 方法

告知偵錯工具,CLR 的 Managed 執行緒已呼叫 EventLog 類別中的方法來記錄事件。

ICorDebugManagedCallback::LogSwitch 方法

告知偵錯工具,CLR 的 Managed 執行緒已呼叫 Switch 類別中的方法,以建立、修改或刪除偵錯/追蹤參數。

ICorDebugManagedCallback::NameChange 方法

告知偵錯工具,應用程式定義域或執行緒的名稱已變更。

ICorDebugManagedCallback::StepComplete 方法

告知偵錯工具,已完成步驟。

ICorDebugManagedCallback::UnloadAssembly 方法

告知偵錯工具,已卸載 CLR 組件。

ICorDebugManagedCallback::UnloadClass 方法

告知偵錯工具,正在卸載類別。

ICorDebugManagedCallback::UnloadModule 方法

告知偵錯工具,已卸載 CLR 模組 (DLL)。

ICorDebugManagedCallback::UpdateModuleSymbols 方法

告知偵錯工具,已變更 CLR 模組的符號。

備註

所有回呼都會序列化、在相同執行緒中呼叫,而且以同步狀態的處理序呼叫。

每個回呼實作都必須呼叫 ICorDebugController::Continue 才能繼續執行。如果在回呼傳回之前未呼叫 ICorDebugController::Continue,則此處理序會維持停止,而且不再發生事件回呼,直到呼叫 ICorDebugController::Continue

如果偵錯工具是偵錯 .NET Framework 2.0 版應用程式,它必須實作 ICorDebugManagedCallback2ICorDebugManagedCallbackICorDebugManagedCallback2 的執行個體就會當做回呼物件傳遞至 ICorDebug::SetManagedHandler

需求

**平台:**請參閱 .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

請參閱

參考

ICorDebug

ICorDebugManagedCallback2

其他資源

偵錯介面