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):
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.
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).
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.
O IDebugContainerField interface é consultado para o IDebugMethodField interface. É essa interface que permite acesso a locais do método.
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.
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.
IDebugExpressionEvaluator::GetMethodPropertyRetorna o CFieldProperty de objeto como um IDebugProperty2 objeto.
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.
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.
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
A implementação de GetMethodProperty
Descreve a implementação de IDebugExpressionEvaluator::GetMethodProperty.Enumerando Locals
Descreve como o mecanismo de depuração (DE) faz uma chamada para enumerar os argumentos ou variáveis locais.Obtenção das propriedades locais
Descreve como o DE faz uma chamada para obter o nome, tipo e valor de um ou mais locais.Obtenção de valores locais
Discute como obter o valor do local, que requer os serviços de um objeto fichário fornecido pelo contexto de avaliação.Avaliando variáveis locais
Explica como as variáveis locais são avaliados.
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.