Вычислитель выражений
Вычислители выражений (EE) проверяют синтаксис языка для синтаксического анализа и вычисления переменных и выражений во время выполнения, позволяя пользователю просматривать их, когда интегрированная среда разработки находится в режиме останова.
Использование вычислителей выражений
Выражения создаются с помощью метода ParseText следующим образом:
Модуль отладки (DE) реализует интерфейс IDebugExpressionContext2 .
Пакет отладки получает
IDebugExpressionContext2
объект из интерфейса IDebugStackFrame2 , а затем вызываетIDebugStackFrame2::ParseText
метод для получения объекта IDebugExpression2 .Пакет отладки вызывает метод EvaluateSync или метод EvaluateAsync , чтобы получить значение выражения.
IDebugExpression2::EvaluateAsync
вызывается из окна Command/Интерпретация. Вызов всех остальныхIDebugExpression2::EvaluateSync
компонентов пользовательского интерфейса.Результатом вычисления выражения является объект IDebugProperty2 , содержащий имя, тип и значение результата вычисления выражения.
Во время оценки выражений EE требует сведения из компонента поставщика символов. Поставщик символов предоставляет символьные сведения, используемые для идентификации и понимания синтаксического выражения.
После завершения асинхронной оценки выражений десинхронное событие отправляется через диспетчер отладки сеанса (SDM), чтобы уведомить интегрированную среду разработки о завершении оценки выражений. Затем результат оценки возвращается из вызова
IDebugExpression2::EvaluateSync
метода.
Примечания по реализации
Обработчики отладки Visual Studio ожидают взаимодействия с вычислителем выражений с помощью интерфейсов CLR. В результате средство оценки выражений, работающее с подсистемами отладки Visual Studio, должно поддерживать среду CLR (полный список всех интерфейсов отладки СРЕДЫ CLR можно найти в debugref.doc, которая входит в состав пакета SDK для Windows.