Partilhar via


Exemplo de implementação de variáveis locais

Aqui está uma visão geral de como o Visual Studio obtém os locais para um método do avaliador de expressão (EE):

  1. Visual Studio chama o mecanismo de depuração (DE) IDebugStackFrame2::GetDebugProperty para obter um IDebugProperty2 objeto que representa todas as propriedades da estrutura de pilhas, incluindo os locais.

  2. IDebugStackFrame2::GetDebugPropertychamadas IDebugExpressionEvaluator::GetMethodProperty para obter um objeto que descreve o método dentro do qual o ponto de interrupção ocorreu. O DE fontes de um provedor de símbolo (IDebugSymbolProvider), um endereço (IDebugAddress) e um fichário (IDebugBinder).

  3. IDebugExpressionEvaluator::GetMethodPropertychamadas IDebugSymbolProvider::GetContainerField com o fornecido IDebugAddress objeto para obter um IDebugContainerField que representa o método que contém o endereço especificado.

  4. O IDebugContainerField interface é consultado para o IDebugMethodField interface. É essa interface que permite acesso a locais do método.

  5. IDebugExpressionEvaluator::GetMethodPropertyinstancia uma classe (chamado CFieldProperty no exemplo) que implementa o IDebugProperty2 interface para representar locals do método. O IDebugMethodField objeto é colocado neste CFieldProperty de objeto juntamente com o IDebugSymbolProvider, IDebugAddress e IDebugBinder objetos.

  6. Quando o CFieldProperty objeto é inicializado, IDebugField::GetInfo for chamado a IDebugMethodField objeto para obter um FIELD_INFO estrutura que contém todas as informações sobre o próprio método de exibição.

  7. IDebugExpressionEvaluator::GetMethodPropertyRetorna o CFieldProperty de objeto como um IDebugProperty2 objeto.

  8. Chamadas de Visual Studio IDebugProperty2::EnumChildren em retornado IDebugProperty2 o objeto com o filtro de guidFilterLocalsPlusArgs. Isso retorna um IEnumDebugPropertyInfo2 que contém os locais do método do objeto. Essa enumeração é preenchida por chamadas para IDebugMethodField::EnumLocals e IDebugMethodField::EnumArguments.

  9. Chamadas de Visual Studio IEnumDebugPropertyInfo2::Next para obter um DEBUG_PROPERTY_INFO estrutura para cada local. Esta estrutura contém um ponteiro para um IDebugProperty2 interface para um local.

  10. Chamadas de Visual Studio IDebugProperty2::GetPropertyInfo para cada local obter o nome do local, valor e tipo. Estas são as informações que são exibidas na Locals janela.

Nesta seção

Seções relacionadas

  • Contexto de avaliação
    Fornece os argumentos que são passados quando o DE chama o avaliador de expressão (EE).

  • MyCEE Sample
    Demonstra uma abordagem de implementação para a criação de um avaliador de expressão para o idioma de MyC.

Consulte também

Outros recursos

Exibindo Locals