式エバリュエーター (EE) は、実行時に変数と式を解析および評価する言語の構文を調べ、IDE が中断モードのときにユーザーが表示できるようにします。
式エバリュエーターを使用する
式は、 次のように ParseText メソッドを使用して作成されます。
デバッグ エンジン (DE) は 、IDebugExpressionContext2 インターフェイスを実装します。
デバッグ パッケージは、
IDebugExpressionContext2インターフェイスから オブジェクトを取得し、IDebugStackFrame2::ParseTextメソッドを呼び出して IDebugExpression2 オブジェクトを取得します。デバッグ パッケージは 、EvaluateSync メソッドまたは EvaluateAsync メソッドを呼び出して式の値を取得します。
IDebugExpression2::EvaluateAsyncは、コマンド/イミディエイト ウィンドウから呼び出されます。 その他のすべての UI コンポーネントは、IDebugExpression2::EvaluateSyncを呼び出します。式の評価の結果は IDebugProperty2 オブジェクトであり、式の評価結果の名前、型、および値が含まれます。
式の評価中、EE にはシンボル プロバイダー コンポーネントからの情報が必要です。 シンボル プロバイダーは、解析された式の識別と理解に使用されるシンボリック情報を提供します。
非同期式の評価が完了すると、DE によってセッション デバッグ マネージャー (SDM) を介して非同期イベントが送信され、式の評価が完了したことを IDE に通知します。 そして、評価の結果は、
IDebugExpression2::EvaluateSyncメソッドの呼び出しから返されます。
実装に関するメモ
Visual Studio デバッグ エンジンは、共通言語ランタイム (CLR) インターフェイスを使用して式エバリュエーターと対話することを想定しています。 その結果、Visual Studio デバッグ エンジンで動作する式エバリュエーターは、CLR をサポートする必要があります (すべての CLR デバッグ インターフェイスの完全な一覧は、Windows ソフトウェア開発キット (SDK) の一部である debugref.doc にあります)。