主要な式エバリュエーター インターフェイス
重要
Visual Studio 2015 では、この方法での式エバリュエーターの実装は非推奨です。 CLR 式エバリュエーターの実装については、CLR 式エバリュエーターに関する記事とマネージド式エバリュエーターのサンプルに関する記事をご覧ください。
評価コンテキストと共に式エバリュエーター (EE) を記述する場合は、次のインターフェイスについて理解しておく必要があります。
インターフェイスの説明
-
Getaddress という 1 つのメソッドがあり、現在の実行ポイントを表すデータ構造を取得します。 このデータ構造は、式を評価するためにデバッグ エンジン (DE) から EvaluateSync メソッドに渡される 3 つの引数のうちの 1 つです。 このインターフェイスは、通常、シンボル プロバイダーによって実装されます。
-
Bind メソッドがあり、シンボルの現在の値を含むメモリ領域を取得します。 IDebugObject オブジェクトによって表される外側のメソッドと、IDebugField オブジェクトによって表されるシンボル自体の両方を指定すると、
IDebugBinder::Bind
からシンボルの値が返されます。IDebugBinder
は通常、DE によって実装されます。 -
データ型を表します。 配列やメソッドなどのより複雑な型については、それぞれ派生の IDebugArrayField と IDebugMethodField インターフェイスを使用します。 IDebugContainerField は、メソッドやクラスなどの他のシンボルを含むシンボルを表すもう 1 つの重要な派生インターフェイスです。
IDebugField
インターフェイス (およびその派生) は、通常、シンボル プロバイダーによって実装されます。IDebugField
オブジェクトを使用すると、シンボルの名前と型を検索できます。また、IDebugBinder オブジェクトと共に使用して、その値を検索することもできます。 -
シンボルの実行時の値の実際のビットを表します。 Bind では、シンボルを表す IDebugField オブジェクトを受け取り、IDebugObject オブジェクトを返します。 GetValue メソッドから、メモリ バッファー内のシンボルの値が返されます。 通常、DE により、メモリ内のプロパティの値を表すために、このインターフェイスが実装されます。
-
このインターフェイスは、式エバリュエーター自体を表します。 重要なメソッドは Parse で、IDebugParsedExpression インターフェイスが返されます。
-
このインターフェイスは、評価の準備ができている解析済みの式を表します。 重要なメソッドは EvaluateSync で、式の値と型を表す IDebugProperty2 が返されます。
-
このインターフェイスは、値とその型を表し、式の評価の結果です。