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:

  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, em seguida, chama o método IDebugStackFrame2::ParseText 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 na janela Comando/Imediato. Todos os outros componentes da interface do usuário 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 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).

Confira também