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;
}