次の方法で共有


IDebugHostEvaluator2::EvaluateExpression メソッド (dbgmodel.h)

EvaluateExpression メソッドを使用すると、デバッグ ホストに言語 (例: C++) 式を評価し、その式評価の結果の値を IModelObject としてボックス化して返すように要求できます。 メソッドのこの特定のバリアントでは、言語コンストラクトのみが許可されます。 言語に存在しないデバッグ ホストの式エバリュエーター内に表示される追加機能 (LINQ クエリ メソッドなど) は、評価のためにオフになります。

このメソッドでは、デバッグ中の言語で定義されている物のみを使用するため、このメソッドは移植性があり、ホストからホストまで安全に使用できます。 特定の言語のデバッグを実装するデバッグ ホストでは、同じ言語をデバッグする他のホストと同じ方法で、このメソッドを使用して式を評価する必要があります。 そのため、これは式の評価を行うための推奨される方法です。

構文

HRESULT EvaluateExpression(
  IDebugHostContext           *context,
  PCWSTR                      expression,
  IModelObject                *bindingContext,
  _COM_Errorptr_ IModelObject **result,
  IKeyStore                   **metadata
);

パラメーター

context

式の評価が行われるホスト コンテキスト。 たとえば、ポインターの逆参照によるターゲットのメモリ読み取りがある場合、それらのメモリ読み取りが行われるアドレス空間は、この引数によって指定されます。

expression

評価する言語式。 この文字列には、デバッグ中の言語で有効な式のみを含む場合があります。 デバッグ ホストの式エバリュエーターで使用できる追加のコンストラクトが含まれていない場合があります。

bindingContext

シンボル (変数) 名が検索されるバインディング コンテキスト。 C++ の場合、これは意味的にはこのポインター値と同じです。

result

式評価の結果の値がここで返されます。

metadata

式または結果に関連付けられているメタデータはすべて、ここで返されます。

戻り値

このメソッドは、成功または失敗を示す HRESULT を返します。

注釈

コード サンプル

ComPtr<IDebugHost> spHost;   /* get the host */
ComPtr<IModelObject> spThis; /* get some object, an example here: some native 
                                object with fields m_intVal and m_intVal2 */

ComPtr<IDebugHostEvaluator2> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spResult;
    ComPtr<IKeyStore> spMetadata;
    if (SUCCEEDED(spEval->EvaluateExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"m_intVal + this->m_intVal2", 
        spThis.Get(), 
        &spResult, 
        &spMetadata)))
    {
        // spResult will have the result of a language evaluation of 
        // "m_intVal + this->m_intVal2" where the name binding context 
        // (e.g.: *this* pointer) is spThis
        // spMetadata will have any additional metadata (e.g.: display radix, etc...)
    }
}

要件

要件
Header dbgmodel.h

こちらもご覧ください

IDebugHostEvaluator2 インターフェイス