IDebugExpressionEvaluator

Важно!

В Visual Studio 2015 такая реализация вычислителя выражений была сделана нерекомендуемой. Дополнительные сведения о реализации вычислителей выражений CLR см. в примере средства оценки выражений CLR и средства оценки управляемых выражений.

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

Синтаксис

IDebugExpressionEvaluator : IUnknown

Примечания для разработчиков

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

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

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

Методы в порядке таблицы Vtable

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

Метод Description
Анализ Преобразует строку выражения в проанализированное выражение.
GetMethodProperty Возвращает локальные переменные, аргументы и другие свойства метода.
GetMethodLocationProperty Преобразует расположение метода и смещение в адрес памяти.
SetLocale Определяет язык, используемый для создания печатных результатов.
SetRegistryRoot Задает корневой каталог реестра. Используется для параллельной отладки.

Замечания

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

После создания экземпляра EE DE вызывает parse для синтаксического анализа выражения и хранения его в объекте IDebugParsedExpression . Позже вызов в EvaluateSync вычисляет выражение.

Requirements

Заголовок: 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;
}

См. также