IDebugExpressionEvaluator
Этот интерфейс представляет средство оценки выражений.
IDebugExpressionEvaluator : IUnknown
Примечания по реализации
Средство оценки выражений должно реализовать данный интерфейс.
Замечания для вызывающих объектов
Получить этот интерфейс с помощью создавать средство оценки выражений CoCreateInstance метод, используя идентификатор класса (CLSID) фильтра. См. пример.
Методы в том порядке Vtable
В следующей таблице показаны методы IDebugExpressionEvaluator.
Метод |
Описание |
---|---|
Преобразует строку выражения в анализированному выражению. |
|
Получает локальные переменные, аргументы и другие свойства метода. |
|
Преобразовывает заданное расположение и смещение метода в адрес памяти. |
|
Определяет, какой язык, используемый для создания печатных результаты. |
|
Задает корневой элемент реестра. Используется для параллельной отладки. |
Заметки
В обычной ситуации создает обработчика отладки (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::EvaluateSync
Вспомогательные методы SDK для отладки