Поделиться через


Вычисление выражения в окне контрольных значений

Выполнение приостанавливается, когда Visual Studio вызывает обработчик отладки (DE), чтобы определить текущее значение каждого выражения в списке контрольное значение. DE вычисляет каждое выражение, используя средство оценки выражений (EE) и отображает его значение в Visual Studio Контрольное значение окна.

Ниже приведены общие сведения о списке контрольного значения вычисляется выражение:

  1. Visual Studio вызывает DE IDebugStackFrame2::GetExpressionContext получить контекст выражения, который можно использовать для оценки выражений.

  2. Для каждого выражения в списке контрольное значение calls Visual Studio IDebugExpressionContext2::ParseText преобразование текста в проанализированное выражение.

  3. IDebugExpressionContext2::ParseText вызовы IDebugExpressionEvaluator::Parse сделать фактических трудозатрат синтаксического анализа текста и создавать IDebugParsedExpression объект.

  4. IDebugExpressionContext2::ParseText создание IDebugExpression2 объект и помещает IDebugParsedExpression объект. Это IDebugExpression2 объект затем возвращается в Visual Studio.

  5. Вызовы Visual Studio IDebugExpression2::EvaluateSync вычислить проанализированное выражение.

  6. IDebugExpression2::EvaluateSync передает вызов IDebugParsedExpression::EvaluateSync выполнить фактическую вычисление и создавать IDebugProperty2 объект, который возвращается в Visual Studio.

  7. Вызовы Visual Studio IDebugProperty2::GetPropertyInfo чтобы получить значение выражения, затем отображается в списке " контрольное значение.

Синтаксический анализ затем оценить

С помощью синтаксического анализа выражения с может занять значительно больше времени, чем оценка его процесс оценки выражения является нечитаемым вверх в шаге 2: 1) анализирует выражение и 2) оценивает проанализированное выражение. Таким образом, вычисление может выполняться много раз, но выражение будет анализируется только один раз. Выражение проанализированное промежуточным звеном в возвращается EE IDebugParsedExpression объект, который, в свою очередь, инкапсулирован как и возвращается из DE IDebugExpression2 объект. IDebugExpression объект откладывает оценку для всей IDebugParsedExpression объект.

Примечание

Не требуются EE соответствовать этому процессу 2 шага, даже если Visual Studio принимает это; EE может синтаксического анализа и оценки в одном и том же действии, если IDebugParsedExpression::EvaluateSync вызывает (это называется образец работает MyCEE, например).Если язык может сформирован сложные выражения, может понадобиться разделить этапе синтаксического анализа из этапа вычисления.Это может повысить производительность в отладчике Visual Studio если несколько выражений контрольного значения отображаются.

Содержание

Связанные разделы

  • контекст оценки
    Предоставляет аргументы, передаваемые, когда обработчик отладки (DE) вызывает средство оценки выражений (EE).

См. также

Другие ресурсы

Запись вычислителя выражений среды CLR