Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вычислители выражений (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.