Avaliador de expressão
Avaliadores de expressão (EE) examinam a sintaxe de uma linguagem para analisar e avaliar as variáveis e expressões em tempo de execução, permitindo que eles sejam exibidos pelo usuário quando o IDE no modo de interrupção.
Usando os avaliadores de expressão
As expressões são criadas usando o IDebugExpressionContext2::ParseText método, da seguinte maneira:
O mecanismo de depuração (DE) implementa o IDebugExpressionContext2 interface.
O pacote de depuração obtém uma IDebugExpressionContext2 de objeto de um IDebugStackFrame2 interface e, em seguida, chama o IDebugStackFrame2::ParseText método para obter um IDebugExpression2 objeto.
As chamadas de pacote de depuração do IDebugExpression2::EvaluateSync método ou a IDebugExpression2::EvaluateAsync método para obter o valor da expressão. IDebugExpression2::EvaluateAsyncé chamado a partir da janela de comando/imediata. Todos os outros componentes de interface do usuário chamar IDebugExpression2::EvaluateSync.
O resultado da avaliação da expressão é um IDebugProperty2 objeto, que contém o nome, tipo e valor do resultado da avaliação da expressão.
Durante a avaliação de expressão, o EE requer informações do componente de provedor do símbolo. O provedor de símbolo fornece as informações simbólicas usadas para identificar e compreender a expressão analisada.
Quando a avaliação da expressão assíncrona for concluída, um evento assíncrono é enviado por DE por meio do Gerenciador de sessão de depuração (SDM) para notificar o IDE para que a avaliação da expressão está completa. Quando a avaliação da expressão síncrona estiver concluída, o resultado da avaliação é retornado da chamada para o IDebugExpression2::EvaluateSync método.
Observações sobre a implementação
O Visual Studio esperam de mecanismos de depuração conversar com o avaliador da expressão usando as interfaces do Common Language Runtime (CLR). Como resultado, um avaliador de expressão que funciona com o Visual Studio mecanismos de depuração devem suportar o CLR (uma lista completa de CLR todas as interfaces de depuração pode ser encontrada em debugref.doc, que faz parte do Windows Software Development Kit (SDK)).