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


IDebugExpressionEvaluator

Этот интерфейс представляет средство оценки выражений.

IDebugExpressionEvaluator : IUnknown

Примечания по реализации

Средство оценки выражений должно реализовать данный интерфейс.

Замечания для вызывающих объектов

Получить этот интерфейс с помощью создавать средство оценки выражений CoCreateInstance метод, используя идентификатор класса (CLSID) фильтра. См. пример.

Методы в том порядке Vtable

В следующей таблице показаны методы IDebugExpressionEvaluator.

Метод

Описание

IDebugExpressionEvaluator::Parse

Преобразует строку выражения в анализированному выражению.

IDebugExpressionEvaluator::GetMethodProperty

Получает локальные переменные, аргументы и другие свойства метода.

IDebugExpressionEvaluator::GetMethodLocationProperty

Преобразовывает заданное расположение и смещение метода в адрес памяти.

IDebugExpressionEvaluator::SetLocale

Определяет, какой язык, используемый для создания печатных результаты.

IDebugExpressionEvaluator::SetRegistryRoot

Задает корневой элемент реестра. Используется для параллельной отладки.

Заметки

В обычной ситуации создает обработчика отладки (DE) средство оценки выражений (EE) в результате вызова IDebugExpressionContext2::ParseText. Поскольку DE знает язык и поставщик EE он хочет использовать DE возвращает идентификатор CLSID EE из реестра ( Вспомогательные методы SDK для отладки функция GetEEMetricсправки с данным, возвращать).

После создания EE вызывает DE IDebugExpressionEvaluator::Parse выполнить синтаксический анализ выражения и сохранить в IDebugParsedExpression объект. Позже, вызов IDebugParsedExpression::EvaluateSync вычисляет выражение.

Требования

Заголовок: ee.h

Пространство имен: Microsoft.VisualStudio.Debugger.Interop

Сборка: Microsoft.VisualStudio.Debugger.Interop.dll

Пример

В этом примере показано, как создать средство оценки выражений заданного поставщика символов и адрес в исходном коде. В этом примере используется функция GetEEMetricот Вспомогательные методы SDK для отладки библиотека, dbgmetric.lib.

IDebugExpressionEvaluator GetExpressionEvaluator(IDebugSymbolProvider pSymbolProvider,
                                                 IDebugAddress *pSourceAddress)
{
    // This is typically defined globally but is specified here just
    // for this example.
    static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";

    IDebugExpressionEvaluator *pEE = NULL;
    if (pSymbolProvider != NULL && pSourceAddress != NULL) {
        HRESULT hr         = S_OK;
        GUID  languageGuid = { 0 };
        GUID  vendorGuid   = { 0 };

        hr = pSymbolProvider->GetLanguage(pSourceAddress,
                                          &languageGuid,
                                          &vendorGuid);
        if (SUCCEEDED(hr)) {
            CLSID clsidEE      = { 0 };
            CComPtr<IDebugExpressionEvaluator> spExpressionEvaluator;
            // Get the expression evaluator's CLSID from the registry.
            ::GetEEMetric(languageGuid,
                          vendorGuid,
                          metricCLSID,
                          &clsidEE,
                          strRegistrationRoot);
            if (!IsEqualGUID(clsidEE,GUID_NULL)) {
                // Instantiate the expression evaluator.
                spExpressionEvaluator.CoCreateInstance(clsidEE);
            }
            if (spExpressionEvaluator != NULL) {
                pEE = spExpressionEvaluator.Detach();
            }
        }
    }
    return pEE;
}

См. также

Ссылки

IDebugExpressionContext2::ParseText

IDebugParsedExpression

IDebugParsedExpression::EvaluateSync

Вспомогательные методы SDK для отладки

Основные понятия

интерфейсы вычисления выражений