архитектура вычислителя выражений
Интегрирующ собственный язык в Visual Studio отладку пакета означает реализация необходимых интерфейсов средства оценки выражений (EE) и вызвать интерфейсы поставщика (пакет обновления) и связывателя символов среды CLR. Пакет обновления и объекты связывателя вместе с текущим адресом контекст выполнения, в котором выражения оцениваются. Сведения, эти интерфейсы создают и потребление представляющие ключевые понятия в архитектуре EE.
Общие сведения
Выполнить синтаксический анализ выражения
При отладке программы, выражения вычисляются по ряду причин но всегда, когда была остановлена отлаживаемой программы в точке останова (или точке останова, помещенной пользователем или одном причиненном исключением). Она в данный момент, когда Visual Studio получает кадр стека, как представлено IDebugStackFrame2 интерфейс из обработчика отладки (DE). Вызовы затем Visual Studio IDebugStackFrame2::GetExpressionContext доступ IDebugExpressionContext2 интерфейс. Этот интерфейс представляет контекст, в котором выражения можно вычислить; IDebugExpressionContext2::ParseText точка входа к процессу вычисления. Стрелка вверх до этому моменту, все интерфейсы не реализованы DE.
После IDebugExpressionContext2::ParseText вызывает, DE создать экземпляр EE, связанный с языком исходного файла, в котором возникла точка останова (DE создает также SH на этом этапе). EE представлен IDebugExpressionEvaluator интерфейс. Затем вызовы DE IDebugExpressionEvaluator::Parse чтобы преобразовать выражение (в текстовой форме) к выражению, анализированному все готово для оценки. Это представляет проанализированное выражение IDebugParsedExpression интерфейс. Обратите внимание, что выражение анализируется и, как правило, не вычисляется на этом этапе.
Создает объект, реализующий DE IDebugExpression2 интерфейс помещает IDebugParsedExpression объект IDebugExpression2 объект, и возвращает IDebugExpression2 объект IDebugExpressionContext2::ParseText.
Оценки выражения
Вызывается Visual Studio; IDebugExpression2::EvaluateSync OR IDebugExpression2::EvaluateAsync вычислить проанализированное выражение. Оба вызова этих методов IDebugParsedExpression::EvaluateSync (IDebugExpression2::EvaluateSync вызывает метод немедленно, пока IDebugExpression2::EvaluateAsync вызывает метод с помощью фоновый поток) для оценки проанализированное выражение и возврата IDebugProperty2 интерфейс, представляющий значение и тип проанализированного выражения. IDebugParsedExpression::EvaluateSync использует предоставленные SH, адрес и привязку для преобразования проанализированное выражение в фактическое значение, представленное IDebugProperty2 интерфейс.
Например
После точки останова, выполненная строка в выполняемой программе, пользователь выбирает для просмотра переменная Быстрая проверка диалоговое окно. Это диалоговое окно отображает имя переменной, его значение и его тип. Обычно пользователь может изменить значение.
После Быстрая проверка отобразится диалоговое окно, имя проверяемого отправляется в виде текста в переменной IDebugExpressionContext2::ParseText. Возвращает IDebugExpression2 объект, представляющий проанализированное выражение, в данном случае переменная. IDebugExpression2::EvaluateSync затем вызывается метод для создания IDebugProperty2 объект, представляющий значение и тип переменной, а также его имя. Это сведения, которые отображаются.
Если пользователь изменяет значение переменной; IDebugProperty2::SetValueAsString вызывает с новым значением, которое изменяет значение переменной в памяти, поэтому оно будет использоваться при возобновлении выполнения программы.
См. Локальные отображение дополнительные сведения об этом процессе вывода значений переменных. См. Изменение значения локальной переменной дополнительные сведения о том, как изменяется значение переменной.
Содержание
контекст оценки
Предоставляет аргументы, передаваемые при вызове ив EE.ключевые интерфейсы вычислителя выражений
Описывает важные интерфейсы, необходимые при написании EE вместе с контекстом оценки.
См. также
Основные понятия
Изменение значения локальной переменной