Principais Interfaces de avaliador de expressão
Ao escrever um avaliador de expressão (EE), juntamente com o contexto de avaliação, você deve estar familiarizado com as seguintes interfaces.
Descrições de interface
-
Possui um único método, IDebugAddress::GetAddress, que obtém uma estrutura de dados que representa o ponto atual de execução. Essa estrutura de dados é um dos três argumentos que o mecanismo de depuração (DE) passa para o IDebugParsedExpression::EvaluateSync método para avaliar uma expressão. Normalmente, essa interface é implementada pelo provedor de símbolo.
-
Tem o IDebugBinder::Bind método, que obtém a área de memória que contém o valor atual de um símbolo. Dado o método que o contém, representado por um IDebugObject objeto e o símbolo propriamente dito, representado por um IDebugField objeto, IDebugBinder::Bind retorna o valor do símbolo. IDebugBindergeralmente é implementado por DE.
-
Representa um tipo de dados simples. Para os tipos mais complexos, como, por exemplo, matrizes e métodos, use o derivado IDebugArrayField e IDebugMethodField interfaces, respectivamente. IDebugContainerFieldoutra importante interface derivada que representa os símbolos que contém outros símbolos, como métodos ou classes. O IDebugField interface (e seus derivativos) costuma ser implementados pelo provedor de símbolo.
Um IDebugField objeto pode ser usado para localizar o nome e tipo de um símbolo ou junto com um IDebugBinder de objeto, pode ser usado para localizar o seu valor.
-
Representa os bits reais do valor de tempo de execução de um símbolo. IDebugBinder::Bindleva um IDebugField objeto que representa um símbolo e retorna um IDebugObject objeto. O IDebugObject::GetValue método retorna o valor do símbolo em um buffer de memória. Normalmente, um DE implementa essa interface para representar o valor de uma propriedade na memória.
-
Essa interface representa o avaliador de expressão propriamente dito. O método principal é IDebugExpressionEvaluator::Parse, que retorna um IDebugParsedExpression interface.
-
Essa interface representa uma expressão de analisada pronta para ser avaliada. O método principal é IDebugParsedExpression::EvaluateSync que retorna um IDebugProperty2 que representa o valor e o tipo da expressão.
-
Essa interface representa um valor e o seu tipo e é o resultado de uma avaliação de expressão.