Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
No Visual Studio 2015, essa forma de implementar avaliadores de expressão é preterida. Para obter informações sobre como implementar avaliadores de expressão CLR, consulte avaliadores de expressão CLR e exemplo de avaliador de expressão gerenciada.
Quando a execução é pausada, o Visual Studio chama o DE (mecanismo de depuração) para determinar o valor atual de cada expressão em sua lista de inspeção. O DE avalia cada expressão usando um EE (avaliador de expressão) e o Visual Studio exibe seu valor na janela Inspeção .
A seguir, uma visão geral de como uma expressão de lista de observação é avaliada:
O Visual Studio chama GetExpressionContext do DE para obter um contexto de expressão que pode ser usado para avaliar expressões.
Para cada expressão na lista de observação, o Visual Studio chama ParseText para converter o texto da expressão em uma expressão analisada.
IDebugExpressionContext2::ParseTextchama Parse para fazer o trabalho real de análise do texto e produzir um objeto IDebugParsedExpression .IDebugExpressionContext2::ParseTextcria um objeto IDebugExpression2 e coloca oIDebugParsedExpressionobjeto nele. Em seguida, esseIDebugExpression2objeto é retornado para o Visual Studio.O Visual Studio chama EvaluateSync para avaliar a expressão analisada.
IDebugExpression2::EvaluateSyncpassa a chamada para EvaluateSync para fazer a avaliação real e produzir um objeto IDebugProperty2 que é retornado ao Visual Studio.O Visual Studio chama GetPropertyInfo para obter o valor da expressão que é exibida na lista de observação.
Analisar, em seguida, avaliar
Como a análise de uma expressão complexa pode levar muito mais tempo do que avaliá-la, o processo de avaliar uma expressão é dividido em duas etapas: 1) analisar a expressão e 2) avaliar a expressão analisada. Dessa forma, a avaliação pode ocorrer muitas vezes, mas a expressão precisa ser analisada apenas uma vez. A expressão analisada intermediária é retornada do EE em um objeto IDebugParsedExpression que, por sua vez, é encapsulado e retornado do DE como um objeto IDebugExpression2 . O IDebugExpression objeto adia toda a avaliação para o IDebugParsedExpression objeto.
Observação
Não é necessário que um EE adere a esse processo de duas etapas, embora o Visual Studio suponha isso; o EE pode analisar e avaliar na mesma etapa quando EvaluateSync é chamado (é assim que o exemplo MyCEE funciona, por exemplo). Se o idioma puder formar expressões complexas, talvez você queira separar a etapa de análise da etapa de avaliação. Isso pode aumentar o desempenho no depurador do Visual Studio quando muitas expressões de observação estão sendo mostradas.
Nesta seção
Uma implementação de exemplo para a avaliação de expressões usa o exemplo MyCEE para guiar o processo de avaliação de expressões.
Avaliar uma expressão de monitoramento explica o que acontece após uma análise de expressão bem-sucedida.
Conteúdo relacionado
O contexto de avaliação fornece os argumentos passados quando o DE (mecanismo de depuração) chama o avaliador de expressão (EE).