Arquitetura do avaliador de expressão
Integrar uma linguagem proprietária do pacote de depuração Visual Studio significa implementar as interfaces do avaliador (EE) necessário expression e chamando as interfaces de fichário e o provedor de símbolo de tempo de execução de linguagem comum (SP). Os objetos de SP e o fichário, juntamente com o endereço atual de execução, são o contexto em que as expressões são avaliadas. As informações que essas interfaces de produzem e consumam representam os principais conceitos da arquitetura de um EE.
Visão Geral
A expressão de análise.
Quando você está depurando um programa, as expressões são avaliadas por diversos motivos mas sempre quando o programa que está sendo depurado foi interrompido no ponto de interrupção (um ponto de interrupção colocado pelo usuário ou a causada por uma exceção). É nesse momento, quando o Visual Studio obtém um quadro de pilha, conforme representado pela IDebugStackFrame2 interface, do mecanismo de depuração (DE). Em seguida, chama um Visual Studio IDebugStackFrame2::GetExpressionContext para obter o IDebugExpressionContext2 interface. Essa interface representa um contexto em que as expressões podem ser avaliadas; IDebugExpressionContext2::ParseTexté o ponto de entrada para o processo de avaliação. Até este ponto, todas as interfaces são implementadas DE.
Quando IDebugExpressionContext2::ParseText é chamado, o DE instancia o EE associado ao idioma do arquivo de origem onde o ponto de interrupção ocorreu (o DE também instancia o SH neste momento). O EE é representado pela IDebugExpressionEvaluator interface. Chama o DE IDebugExpressionEvaluator::Parse para converter a expressão (na forma de texto) em uma expressão analisada, pronto para avaliação. Essa expressão analisada é representado pela IDebugParsedExpression interface. Observe que a expressão é geralmente analisada e não será avaliada neste momento.
O DE cria um objeto que implementa o IDebugExpression2 interface, coloca o IDebugParsedExpression de objeto para o IDebugExpression2 objeto e retorna o IDebugExpression2 de objeto de IDebugExpressionContext2::ParseText.
Avaliar a expressão
Visual Studio chama um IDebugExpression2::EvaluateSync ou IDebugExpression2::EvaluateAsync para avaliar a expressão analisada. Ambos os métodos de chamada IDebugParsedExpression::EvaluateSync (IDebugExpression2::EvaluateSync chama o método imediatamente, enquanto IDebugExpression2::EvaluateAsync chama o método por meio de um thread de segundo plano) para avaliar a expressão analisada e retornar um IDebugProperty2 interface que representa o valor e o tipo da expressão analisada. IDebugParsedExpression::EvaluateSyncusa o SH, endereço e fichário fornecido para converter a expressão analisada em um valor real, representado pela IDebugProperty2 interface.
Por exemplo
Depois de um ponto de interrupção é alcançado em um programa em execução, o usuário optar por exibir uma variável na QuickWatch caixa de diálogo. Esta caixa de diálogo mostra o nome da variável, seu valor e seu tipo. O usuário geralmente pode alterar o valor.
Quando o QuickWatch caixa de diálogo é exibida, o nome da variável que está sendo examinado for enviado como texto em IDebugExpressionContext2::ParseText. Isso retorna um IDebugExpression2 objeto que representa a expressão analisada, nesse caso, a variável. IDebugExpression2::EvaluateSyncem seguida, é chamado para produzir uma IDebugProperty2 o objeto que representa o tipo e o valor da variável, bem como seu nome. É essa informação que é exibida.
Se o usuário altera o valor da variável, IDebugProperty2::SetValueAsString é chamado com o novo valor, o que altera o valor da variável na memória para que ele será usado quando o programa continua em execução.
Consulte Exibindo Locals para obter mais detalhes sobre esse processo de exibir os valores de variáveis. Consulte Alterar o valor de um Local. para obter mais detalhes sobre como o valor de uma variável é alterada.
Nesta seção
Contexto de avaliação
Fornece os argumentos que são passados quando o DE chama o EE.Principais Interfaces de avaliador de expressão
Descreve as interfaces cruciais necessárias ao escrever um EE, juntamente com o contexto de avaliação.
Consulte também
Conceitos
Outros recursos
Escrevendo um avaliador da expressão em tempo de execução de linguagem comum