Compartilhar via


Avaliador de expressão

Os avaliadores de expressão (EE) examinam a sintaxe de uma linguagem para analisar e avaliar variáveis e expressões em tempo de execução, 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:

  1. O DE (mecanismo de depuração) implementa a interface IDebugExpressionContext2 .

  2. O pacote de depuração obtém um objeto IDebugExpressionContext2 de uma interface IDebugStackFrame2 e, então, chama o método IDebugStackFrame2::ParseText sobre ele para obter um objeto IDebugExpression2.

  3. 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 da janela Comando/Imediato. Todos os outros componentes de UI chamam IDebugExpression2::EvaluateSync.

  4. 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 da expressão.

    Durante a avaliação da expressão, o EE requer informações do componente do 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 de que a avaliação da expressão está concluída. E, em seguida, 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 ao CLR (uma lista completa de todas as interfaces de depuração clr pode ser encontrada em debugref.doc, que faz parte do SDK (Kit de Desenvolvimento de Software do Windows)).

Consulte também