Recursos comuns do avaliador de expressão

Este tópico descreve diversos recursos avaliador de expressão que são comuns ao depurador, variando apenas por idioma.

Variáveis implícitas

Visual Basic e C#, você pode criar variáveis implícitas usando o avaliador da expressão.Essas variáveis implícitas nunca vá fora do escopo e podem ser tratados como qualquer outra variável.

No C#, você pode criar uma variável implícita, declarando-o o avaliador da expressão.Por exemplo, você pode inserir o código a seguir C# na imediata janela:

int b = 100;

Quando você executa este código no imediata janela, a nova variável implícita aparece no Locals janela com o sinal de $ na frente do nome da variável, nesse caso, $b.

No Visual Basic, você não pode declarar variáveis implícitas no avaliador de expressão.No entanto, se você usar uma variável não declarada no avaliador de expressão Visual Basic, uma variável implícita é criada automaticamente.Visual Basic, variáveis implícitas não estão listadas no Locals janela.

Pontos de interrupção

Se você usar a janela imediata para avaliar uma função que contém um ponto de interrupção ou método Visual Basic ou C#, aquele ponto de interrupção é atingido e um novo quadro aparece no Pilha de chamadas.Aqui está um exemplo de C#:

    class Program
    {
        static void Main(string[] args)
        {
// Breakpoint here:
             int a = 20;
         }
    }

Se você definir um ponto de interrupção onde o comentário indica, compila e executa o programa pressionando F5, atingirá o ponto de interrupção de maneira regular.Se agora avaliar o método Main digitando Program.Main(null) para o imediata janela, o ponto de interrupção será atingido pela segunda vez e haverá uma entrada para o método na Pilha de chamadas.

Avaliar na janela Watch

Para evitar possíveis efeitos colaterais de indesejado, uma chamada de função ou método não é automaticamente avaliada toda vez que as etapas de depurador.Em vez disso, um ícone permite que você atualizar manualmente o resultado.Ele aparece no valor coluna.Isso permite avaliar a chamada manualmente.Para mais informações, consulte Efeitos colaterais e expressões.

Identidade de objeto

Este recurso não está disponível para Visual Basic.

Alguns aplicativos criam muitas instâncias de uma classe.Esses aplicativos, é freqüentemente útil ter um identificador para distinguir uma determinada instância da classe.Isso pode ser útil, por exemplo, se uma instância específica da classe não está se comportando conforme o esperado ou uma instância específica foi inserida mais de uma vez para uma coleção deve conter apenas ele vez.

ms164903.collapse_all(pt-br,VS.110).gifIdentidade do objeto nativo

Quando você depurar o código não gerenciado, você pode identificar exclusivamente um objeto usando seu endereço.Isso é importante por dois motivos:

  • Você pode controlar um objeto apenas usando seu endereço.Isso inclui a capacidade de usar um endereço para:

    • Exiba o valor do objeto nesse endereço.

    • Verificar a igualdade.Freqüentemente, o endereço de um objeto pode ser usado da mesma forma como a variável de objeto.

  • Você pode usar o endereço de um objeto, a instância, para definir um ponto de interrupção em um método de instância específica.

    Por exemplo, suponha que você tenha um objeto é uma instância da classe CMyType, com endereço 0xcccccccc.Você pode especificar um ponto de interrupção de função no método aMethod de que a instância da seguinte maneira:

    ((CMyType *) 0xcccccccc)->aMethod

ms164903.collapse_all(pt-br,VS.110).gifIdentidade de objeto gerenciado

Com código gerenciado, você não pode usar o endereço do objeto para identificá-lo.Em vez disso, use um inteiro, conhecido como o ID do objeto gerado pelo common language runtime (CLR) depurando serviços e associado ao objeto.Esse número é um inteiro positivo gerado pelo CLR depuração serviços.O valor de ID de objeto não tem nenhum significado, exceto para identificar exclusivamente o objeto.

Identificadores de objeto são exibidos como inteiros de tamanho variável, decimais, com o sinal de número (#) acrescentado depois do número, sem quaisquer zeros como 5#.Alças aparecem na valor coluna no windows de dados diferente do depurador.

Para criar uma ID de objeto para uma variável, a variável com o botão direito e selecione ID do objeto tornar.O depurador exibirá um número com o sinal de número (#) sinal acrescentado depois dela, como 123#.Para excluir uma identificação de objeto, a variável com o botão direito e selecione Excluir ID do objeto.

Quando um ponto de interrupção é atingido, você pode digitar o identificador da variável para o Watch janela.O depurador exibirá o valor da ID de objeto e você pode expandir e inspecione-assim como qualquer outra variável.

Você pode usar o ID do objeto para definir um ponto de interrupção em um método de uma instância específica.Por exemplo, suponha que você tenha um objeto é uma instância da classe CMyType, e a instância tem o ID do objeto 5#.Classe CMyType inclui um método aMethod.Você pode definir um ponto de interrupção de função no método aMethod da instância de 5# da seguinte maneira:

((CMyType) 5#).aMethod

Você também pode usar o ID do objeto em uma condição de ponto de interrupção.O exemplo a seguir mostra como você pode testar o ID do objeto em uma condição.

this == 5#

Para obter informações sobre como especificar uma condição de ponto de interrupção, consulte Como: especificar uma condição de ponto de interrupção.

Consulte também

Conceitos

Exibindo dados no depurador

Outros recursos

Expressões no depurador

Depurador Roadmap