Поделиться через


Метод 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...)
    }
}

Требования

Требование Ценность
заголовка dbgmodel.h

См. также

интерфейс IDebugHostEvaluator2