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


Метод IDebugHostEvaluator::EvaluateExtendedExpression (dbgmodel.h)

Метод EvaluateExtendedExpression аналогичен методу EvaluateExpression, за исключением того, что он возвращает дополнительные функции, не относящиеся к языку, которые конкретный узел отладки выбирает для добавления в свой вычислитель выражений. Например, для средств отладки для Windows это позволяет использовать анонимные типы, запросы LINQ, квалификаторы модулей, описатели формата и другие функции, отличные от C/C++.

Важно отметить, что нет никакой гарантии, что выражение, которое вычисляется для одного узла с помощью EvaluateExtendedExpression, будет правильно оцениваться по отношению к другому узлу, который отлаживать тот же язык. Расширения в средстве оценки выражений являются областью действия данного узла. По этой причине клиентам настоятельно рекомендуется использовать метод EvaluateExpression вместо метода EvaluateExtendedExpression. Использование этого метода снижает переносимость вызывающего объекта.

Синтаксис

HRESULT EvaluateExtendedExpression(
  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<IDebugHostEvaluator> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spNotepadProcesses;

    // We can use any syntax that's private to the host (not only 
    // language syntax).  This is not necessarily portable from host to host
    if (SUCCEEDED(spEval->EvaluateExtendedExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"@$cursession->Processes.Where(p => p.Name == \"notepad.exe\")", 
        nullptr, 
        &spNotepadProcesses, 
        nullptr)))
    {
        // spNotepadProcesses will contain a collection of every process 
        // named (exactly) "notepad.exe".  Such can be iterated with IIterableConcept.
    }
}

Требования

Требование Значение
Заголовок dbgmodel.h

См. также раздел

Интерфейс IDebugHostEvaluator