Avaliador de expressão
Os EE (avaliadores de expressão) examinam a sintaxe de uma linguagem para analisar e avaliar variáveis e expressões em runtime, permitindo que elas sejam exibidas pelo usuário quando o IDE estiver no modo de interrupção.
Usar avaliadores de expressão
As expressões são criadas usando o método ParseText, da seguinte maneira:
O DE (mecanismo de depuração) implementa a interface IDebugExpressionContext2.
O pacote de depuração obtém um objeto
IDebugExpressionContext2
de uma interface IDebugStackFrame2 e, em seguida, chama o métodoIDebugStackFrame2::ParseText
para obter um objeto IDebugExpression2.O pacote de depuração chama o método EvaluateSync ou o método EvaluateAsync para obter o valor da expressão.
IDebugExpression2::EvaluateAsync
é chamado na janela Comando/Imediato. Todos os outros componentes da interface do usuário chamamIDebugExpression2::EvaluateSync
.O resultado da avaliação de expressão é um objeto IDebugProperty2, que contém o nome, o tipo e o valor do resultado da avaliação de expressão.
Durante a avaliação de expressão, o EE requer informações do componente provedor de símbolos. O provedor de símbolos fornece as informações simbólicas usadas para identificar e entender a expressão analisada.
Quando a avaliação de expressão assíncrona é concluída, um evento assíncrono é enviado pelo DE por meio do SDM (gerenciador de depuração de sessão) para notificar o IDE que a avaliação da expressão está concluída. Assim, o resultado da avaliação é retornado da chamada para o método
IDebugExpression2::EvaluateSync
.
Notas de implementação
Os mecanismos de depuração do Visual Studio esperam conversar com o avaliador de expressão usando interfaces CLR (Common Language Runtime). Como resultado, um avaliador de expressão que funciona com os mecanismos de depuração do Visual Studio deve dar suporte a CLR (uma lista completa de todas as interfaces de depuração CLR pode ser encontrada em debugref.doc, que faz parte do SDK (Software Development Kit) do Windows).