更新 : 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 オブジェクトが現在実行している計算を中止します。 |
|
指定した関数への呼び出しを設定します。このメソッドは、.NET Framework Version 2.0 で互換性のために残されています。代わりに ICorDebugEval2::CallParameterizedFunction を使用してください。 |
|
初期値がゼロまたは null の、指定した型の ICorDebugValue オブジェクトへのインターフェイス ポインタを取得します。このメソッドは、.NET Framework 2.0 で互換性のために残されています。代わりに ICorDebugEval2::CreateValueForType を使用してください。 |
|
評価の結果を含む ICorDebugValue へのインターフェイス ポインタを取得します。 |
|
この評価を実行しているか、今後実行する ICorDebugThread へのインターフェイス ポインタを取得します。 |
|
この ICorDebugEval オブジェクトが現在実行中かどうかを示す値を取得します。 |
|
指定した要素型および大きさの新しい配列を割り当てます。このメソッドは、.NET Framework 2.0 で互換性のために残されています。代わりに ICorDebugEval2::NewParameterizedArray を使用してください。 |
|
新しいオブジェクト インスタンスを割り当て、指定したコンストラクタ メソッドを呼び出します。このメソッドは、.NET Framework 2.0 で互換性のために残されています。代わりに ICorDebugEval2::NewParameterizedObject を使用してください。 |
|
コンストラクタ メソッドを呼び出さずに、指定した型の新しいオブジェクト インスタンスを割り当てます。このメソッドは、.NET Framework 2.0 で互換性のために残されています。代わりに ICorDebugEval2::NewParameterizedObjectNoConstructor を使用してください。 |
|
指定した内容で新しい文字列オブジェクトを割り当てます。 |
解説
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