次の方法で共有


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 Version 2.0 で互換性のために残されています。代わりに ICorDebugEval2::CallParameterizedFunction を使用してください。

ICorDebugEval::CreateValue メソッド

初期値がゼロまたは null の、指定した型の ICorDebugValue オブジェクトへのインターフェイス ポインタを取得します。このメソッドは、.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::Continue を呼び出す前に、ICorDebugController::SetAllThreadsDebugState または ICorDebugController::Stop を使用してスレッドを中断します。

ユーザー コードは評価の実行中に実行されるため、クラスの読み込みやブレークポイントなど、デバッグ イベントが発生する可能性があります。デバッガは、これらのイベントのコールバックを通常どおりに受け取ります。評価の状態は、通常のプログラム状態の一部として表示されます。スタック チェーンは 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

その他の技術情報

デバッグのインターフェイス