次の方法で共有


式エバリュエーターの実装方法

重要

Visual Studio 2015 では、この方法での式エバリュエーターの実装は非推奨です。 CLR 式エバリュエーターの実装については、CLR 式エバリュエーターに関する記事とマネージド式エバリュエーターのサンプルに関する記事をご覧ください。

式エバリュエーター (EE) を迅速に作成する方法の 1 つは、[ローカル] ウィンドウにローカル変数を表示するために必要な最小限のコードを最初に実装することです。 [ローカル] ウィンドウの各行にはローカル変数の名前、型、値が表示され、3 つすべてが IDebugProperty2 オブジェクトによって表されることにご注意ください。 ローカル変数の名前、型、値は、IDebugProperty2 オブジェクトから GetPropertyInfo メソッドを呼び出して取得されます。 [ローカル] ウィンドウにローカル変数を表示する方法の詳細については、「ローカルの表示」を参照してください。

考察 (Discussion)

考えられる実装順序は、IDebugExpressionEvaluator の実装から始まります。 ローカルを表示するには、Parse および GetMethodProperty メソッドを実装する必要があります。 IDebugExpressionEvaluator::GetMethodProperty を呼び出すと、メソッドを表す IDebugProperty2 オブジェクト (つまり、IDebugMethodField オブジェクト) が返されます。 メソッド自体は、[ローカル] ウィンドウに表示されません。

次に、EnumChildren メソッドを実装する必要があります。 デバッグ エンジン (DE) では、このメソッドを呼び出し、IDebugProperty2::EnumChildrenguidFilterLocalsPlusArgsguidFilter 引数を渡して、ローカル変数と引数のリストを取得します。 IDebugProperty2::EnumChildren では、EnumArgumentsEnumLocals が呼び出され、その結果が単一の列挙に結合されます。 詳細については、「ローカルの表示」を参照してください。