Вычисление выражения в окне контрольных значений
Выполнение приостанавливается, когда Visual Studio вызывает обработчик отладки (DE), чтобы определить текущее значение каждого выражения в списке контрольное значение. DE вычисляет каждое выражение, используя средство оценки выражений (EE) и отображает его значение в Visual Studio Контрольное значение окна.
Ниже приведены общие сведения о списке контрольного значения вычисляется выражение:
Visual Studio вызывает DE IDebugStackFrame2::GetExpressionContext получить контекст выражения, который можно использовать для оценки выражений.
Для каждого выражения в списке контрольное значение calls Visual Studio IDebugExpressionContext2::ParseText преобразование текста в проанализированное выражение.
IDebugExpressionContext2::ParseText вызовы IDebugExpressionEvaluator::Parse сделать фактических трудозатрат синтаксического анализа текста и создавать IDebugParsedExpression объект.
IDebugExpressionContext2::ParseText создание IDebugExpression2 объект и помещает IDebugParsedExpression объект. Это IDebugExpression2 объект затем возвращается в Visual Studio.
Вызовы Visual Studio IDebugExpression2::EvaluateSync вычислить проанализированное выражение.
IDebugExpression2::EvaluateSync передает вызов IDebugParsedExpression::EvaluateSync выполнить фактическую вычисление и создавать IDebugProperty2 объект, который возвращается в Visual Studio.
Вызовы Visual Studio IDebugProperty2::GetPropertyInfo чтобы получить значение выражения, затем отображается в списке " контрольное значение.
Синтаксический анализ затем оценить
С помощью синтаксического анализа выражения с может занять значительно больше времени, чем оценка его процесс оценки выражения является нечитаемым вверх в шаге 2: 1) анализирует выражение и 2) оценивает проанализированное выражение. Таким образом, вычисление может выполняться много раз, но выражение будет анализируется только один раз. Выражение проанализированное промежуточным звеном в возвращается EE IDebugParsedExpression объект, который, в свою очередь, инкапсулирован как и возвращается из DE IDebugExpression2 объект. IDebugExpression объект откладывает оценку для всей IDebugParsedExpression объект.
Примечание
Не требуются EE соответствовать этому процессу 2 шага, даже если Visual Studio принимает это; EE может синтаксического анализа и оценки в одном и том же действии, если IDebugParsedExpression::EvaluateSync вызывает (это называется образец работает MyCEE, например).Если язык может сформирован сложные выражения, может понадобиться разделить этапе синтаксического анализа из этапа вычисления.Это может повысить производительность в отладчике Visual Studio если несколько выражений контрольного значения отображаются.
Содержание
Пример реализации вычисления выражений
Использует образец MyCEE для пошагового просмотра процесс оценки выражений.Вычисление выражения контрольное значение
Объясняет, что происходит после успешного синтаксического анализа выражения.
Связанные разделы
- контекст оценки
Предоставляет аргументы, передаваемые, когда обработчик отладки (DE) вызывает средство оценки выражений (EE).