Partilhar via


Avaliar uma expressão de janela de inspeção

Quando a execução será interrompida, o Visual Studio chama o mecanismo de depuração (DE) para determinar o valor atual de cada expressão na sua lista de monitoramento. O DE avalia cada expressão usando um avaliador de expressão (EE) e Visual Studio exibe seu valor na Watch janela.

Aqui está uma visão geral de como uma expressão de lista de inspeção é avaliada:

  1. Visual Studio chama o DE IDebugStackFrame2::GetExpressionContext para obter um contexto de expressão que pode ser usado para avaliar expressões.

  2. Para cada expressão na lista de monitoramento, chama o Visual Studio IDebugExpressionContext2::ParseText para converter o texto da expressão em uma expressão analisada.

  3. IDebugExpressionContext2::ParseTextchamadas IDebugExpressionEvaluator::Parse para fazer o trabalho real de analisar o texto e produzir uma IDebugParsedExpression objeto.

  4. IDebugExpressionContext2::ParseTextcria um IDebugExpression2 objeto e estabelece a IDebugParsedExpression o objeto para ele. Este IDebugExpression2 objeto é retornado ao Visual Studio.

  5. Chamadas de Visual Studio IDebugExpression2::EvaluateSync para avaliar a expressão analisada.

  6. IDebugExpression2::EvaluateSyncpassa a chamada para IDebugParsedExpression::EvaluateSync para fazer a avaliação real e produzir uma IDebugProperty2 objeto retornado para Visual Studio.

  7. Chamadas de Visual Studio IDebugProperty2::GetPropertyInfo para obter o valor da expressão que é exibido na lista de monitoramento.

Analisar e avaliar

Uma vez que uma expressão complexa de análise pode demorar muito mais ao-lo, o processo de avaliar uma expressão é quebrado em duas etapas: 1) analisar a expressão e 2) avaliar a expressão analisada. Dessa forma, a avaliação pode acontecer várias vezes mas a expressão precisa ser analisada apenas uma vez. A expressão analisada intermediária é retornada a partir da EE em um IDebugParsedExpression objeto que por sua vez é encapsulado e retornado a partir DE como um IDebugExpression2 objeto. O IDebugExpression objeto adia todos os avaliação para o IDebugParsedExpression objeto.

Dica

Não é necessário para um EE que aderir a esse processo de duas etapas, embora Visual Studio supõe que isso. o EE pode analisar e avaliar na mesma etapa quando IDebugParsedExpression::EvaluateSync é chamado (isso é como a amostra de MyCEE funciona, por exemplo).Se o seu idioma pode formar expressões complexas, você poderá separar a etapa de análise da etapa de avaliação.Isso pode aumentar o desempenho no depurador Visual Studio quando muitas expressões de inspeção estão sendo mostrado.

Nesta seção

Seções relacionadas

  • Contexto de avaliação
    Fornece os argumentos que são passados quando o mecanismo de depuração (DE) chama o avaliador de expressão (EE).

Consulte também

Outros recursos

Escrevendo um avaliador da expressão em tempo de execução de linguagem comum