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:
Visual Studio chama o DE IDebugStackFrame2::GetExpressionContext para obter um contexto de expressão que pode ser usado para avaliar expressões.
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.
IDebugExpressionContext2::ParseTextchamadas IDebugExpressionEvaluator::Parse para fazer o trabalho real de analisar o texto e produzir uma IDebugParsedExpression objeto.
IDebugExpressionContext2::ParseTextcria um IDebugExpression2 objeto e estabelece a IDebugParsedExpression o objeto para ele. Este IDebugExpression2 objeto é retornado ao Visual Studio.
Chamadas de Visual Studio IDebugExpression2::EvaluateSync para avaliar a expressão analisada.
IDebugExpression2::EvaluateSyncpassa a chamada para IDebugParsedExpression::EvaluateSync para fazer a avaliação real e produzir uma IDebugProperty2 objeto retornado para Visual Studio.
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
Exemplo de implementação de avaliação de expressão
Usa o exemplo de MyCEE para passar pelo processo de avaliação de expressão.Avaliar uma expressão de inspeção
Explica o que acontece após uma análise de expressão bem-sucedida.
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