共用方式為


ICorDebugEval

更新:2007 年 11 月

提供方法讓偵錯工具執行所偵錯的程式碼內容中的程式碼。

interface ICorDebugEval : IUnknown {
        
    HRESULT Abort ();
        
    HRESULT CallFunction (
        [in] ICorDebugFunction  *pFunction,
        [in] ULONG32            nArgs,
        [in, size_is(nArgs)] ICorDebugValue *ppArgs[]
    );
        
    HRESULT CreateValue (
        [in] CorElementType     elementType,
        [in] ICorDebugClass     *pElementClass,
        [out] ICorDebugValue    **ppValue
    );
        
    HRESULT GetResult (
        [out] ICorDebugValue    **ppResult
    );
        
    HRESULT GetThread (
        [out] ICorDebugThread   **ppThread
    );
        
    HRESULT IsActive (
        [out] BOOL              *pbActive
    );
        
    HRESULT NewArray (
        [in] CorElementType     elementType,
        [in] ICorDebugClass     *pElementClass,
        [in] ULONG32            rank,
        [in, size_is(rank)] ULONG32 dims[],
        [in, size_is(rank)] ULONG32 lowBounds[]
    );
        
    HRESULT NewObject (
        [in] ICorDebugFunction  *pConstructor,
        [in] ULONG32            nArgs,
        [in, size_is(nArgs)] ICorDebugValue *ppArgs[]
    );
        
    HRESULT NewObjectNoConstructor (
        [in] ICorDebugClass     *pClass
    );
        
    HRESULT NewString (
        [in] LPCWSTR            string
    );
        
};

方法

方法

說明

ICorDebugEval::Abort 方法

中止此 ICorDebugEval 物件目前正在執行的計算。

ICorDebugEval::CallFunction 方法

設定指定函式的呼叫。(.NET Framework 2.0 版中已不再使用;請改用 ICorDebugEval2::CallParameterizedFunction)。

ICorDebugEval::CreateValue 方法

取得指定之型別的 ICorDebugValue 物件的介面指標,其初始值為零或 null (.NET Framework 2.0 中已不再使用;請改用 ICorDebugEval2::CreateValueForType)。

ICorDebugEval::GetResult 方法

取得 ICorDebugValue 的介面指標,包含評估的結果。

ICorDebugEval::GetThread 方法

取得 ICorDebugThread 的介面指標,評估正在這裡執行或即將執行。

ICorDebugEval::IsActive 方法

取得值,指出目前是否正在執行此 ICorDebugEval 物件。

ICorDebugEval::NewArray 方法

配置指定元素型別和維度的新陣列。(.NET Framework 2.0 中已不再使用;請改用 ICorDebugEval2::NewParameterizedArray)。

ICorDebugEval::NewObject 方法

配置新物件執行個體,並呼叫指定的建構函式方法。(.NET Framework 2.0 中已不再使用;請改用 ICorDebugEval2::NewParameterizedObject)。

ICorDebugEval::NewObjectNoConstructor 方法

配置指定型別的新物件執行個體,而不嘗試呼叫建構函式方法。(.NET Framework 2.0 中已不再使用;請改用 ICorDebugEval2::NewParameterizedObjectNoConstructor)。

ICorDebugEval::NewString 方法

以指定之內容配置新的字串物件。

備註

ICorDebugEval 物件是在用來執行評估之特定執行緒的內容中建立的。指定的評估中使用的所有物件和型別都必須位在相同應用程式定義域中。該應用程式定義域不需和此執行緒的目前應用程式定義域相同。評估可以是巢狀結構。

直到偵錯工具呼叫 ICorDebugController::Continue,然後接收 ICorDebugManagedCallback::EvalComplete 回呼為止,都不會完成評估的作業。如果需要使用評估功能,但不允許執行其他執行緒,請先使用 ICorDebugController::SetAllThreadsDebugStateICorDebugController::Stop 暫止執行緒,再呼叫 ICorDebugController::Continue

因為在進行評估時使用者程式碼會同時執行,所以任何偵錯事件都會發生,包括類別載入和中斷點。偵錯工具會照常接收這些事件的回呼。評估的狀態會被視為一般程式狀態檢查的一部分。堆疊鏈結將會是 CHAIN_FUNC_EVAL 鏈結 (請參閱 CorDebugStepReason 列舉型別和 ICorDebugChain::GetReason 方法)。完整偵錯工具 API 會繼續正常運作。

如果發生死結或無限迴圈的狀況,使用者程式碼可能永遠不會完成。在此情況下,繼續程序之前必須先呼叫 ICorDebugEval::Abort

需求

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

請參閱

參考

ICorDebugEval2

ICorDebugThread

ICorDebugValue

其他資源

偵錯介面