Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
No Visual Studio 2015, essa maneira de implementar avaliadores de expressão foi preterida. Para obter informações sobre como implementar avaliadores de expressão CLR, consulte os avaliadores de expressão CLR no e o exemplo de avaliador de expressão gerenciado no .
A seguir está uma visão geral de como o Visual Studio obtém os locais para um método do avaliador de expressão (EE):
O Visual Studio chama do mecanismo de depuração (DE) o GetDebugProperty para obter um objeto IDebugProperty2 que representa todas as propriedades do quadro de pilha, incluindo as variáveis locais.
IDebugStackFrame2::GetDebugPropertychama GetMethodProperty para obter um objeto que descreve o método no qual o ponto de interrupção aconteceu. O DE fornece um provedor de símbolos (IDebugSymbolProvider), um endereço (IDebugAddress) e um agregador (IDebugBinder).IDebugExpressionEvaluator::GetMethodPropertychama GetContainerField com o objetoIDebugAddressfornecido para obter um IDebugContainerField que representa o método que contém o endereço especificado.A interface
IDebugContainerFieldé consultada para a interface IDebugMethodField. É esta interface que dá acesso às variáveis locais do método.IDebugExpressionEvaluator::GetMethodPropertyinstancia uma classe (chamadaCFieldPropertyno exemplo) que executa a interfaceIDebugProperty2para representar os locais do método. O objetoIDebugMethodFieldé colocado nesse objetoCFieldPropertyjunto com os objetosIDebugSymbolProvider,IDebugAddresseIDebugBinder.Quando o objeto
CFieldPropertyé inicializado, GetInfo é chamado no objetoIDebugMethodFieldpara obter uma estrutura FIELD_INFO que contém todas as informações exibiveis sobre o próprio método.IDebugExpressionEvaluator::GetMethodPropertyretorna o objetoCFieldPropertycomo um objetoIDebugProperty2.O Visual Studio chama EnumChildren no objeto
IDebugProperty2retornado com o filtroguidFilterLocalsPlusArgs, que retorna um objeto IEnumDebugPropertyInfo2 que contém as variáveis locais do método. Esta enumeração é preenchida através de chamadas para EnumLocals e EnumArguments.O Visual Studio chama Next para obter uma estrutura DEBUG_PROPERTY_INFO para cada local. Essa estrutura contém um ponteiro para uma interface
IDebugProperty2para um local.O Visual Studio chama GetPropertyInfo para cada local para obter o nome, o valor e o tipo do local. Esta informação é exibida na janela Locais.
Nesta secção
Implementar GetMethodProperty descreve uma implementação do GetMethodProperty.
Enumerar locais descreve como o mecanismo de depuração (DE) faz uma chamada para enumerar variáveis ou argumentos locais.
Obter propriedades locais descreve como o DE faz uma chamada para obter o nome, o tipo e o valor de uma ou mais variáveis locais.
Obter valores locais discute a obtenção do valor local, o que requer os serviços de um objeto associador dado pelo contexto de avaliação.
Avaliar locais explica como os locais são avaliados.
Secções relacionadas
O contexto de avaliação fornece os argumentos que são passados quando o DE chama o avaliador de expressões (EE).
exemplo MyCEE demonstra uma abordagem de implementação para criar um avaliador de expressão para a linguagem MyC.