Compartilhar via


Recursos comuns do avaliador de expressão

This topic applies to:

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

O tópico é aplicável O tópico é aplicável O tópico é aplicável O tópico é aplicável O tópico é aplicável

Pro, Premium e Ultimate

O tópico é aplicável O tópico é aplicável O tópico é aplicável O tópico é aplicável O tópico é aplicável

Este tópico descreve os vários recursos do avaliador de expressão que são comuns para o 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ícita nunca sairá 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 esse código na imediata a nova variável implícita de janela, aparece no Locals janela com o sinal de $ na frente do nome da variável, nesse caso, $b.

No Visual Basic, é possível 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 de Visual Basic, uma variável implícita é criada automaticamente. Visual Basic, variáveis implícitas não estão listadas na Locals janela.

Pontos de interrupção

Se você usar a janela Verificação imediata para avaliar um método de Visual Basic ou C# ou uma função que contém um ponto de interrupção, esse ponto de interrupção é atingido e um novo quadro aparece no Call Stack. 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 de onde o comentário indica, compilar e executa o programa pressionando F5, você 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 Call Stack.

Avaliando na janela Watch

Para evitar possíveis efeitos colaterais de indesejados, uma chamada de função ou método não é automaticamente avaliada toda vez que as etapas do depurador. Em vez disso, um ícone permite que você atualizar manualmente o resultado. Ele aparece no valor coluna. Isso permite que você avalie a chamada manualmente. For more information, see Efeitos Colaterias e Expressões.

Identidade do objeto

Esse 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 como esperado ou uma instância específica foi inserida mais de uma vez em uma coleção que deveria conter apenas-lo uma vez.

Identidade do objeto nativo

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

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

    • Exiba o valor do objeto nesse endereço.

    • Seleção de 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ê tem um objeto que é uma instância da classe CMyType, com o endereço 0xcccccccc. Você pode especificar um ponto de interrupção de função no método aMethod dessa instância da seguinte maneira:

    ((CMyType *) 0xcccccccc)->aMethod

Identidade de objeto gerenciado

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

Os identificadores de objeto são exibidos como inteiros de comprimento variável, decimais, com o sinal numérico (#) acrescentado após o número, sem qualquer zeros à esquerda, como 5#. Aparecem alças na valor coluna nas janelas de dados de diferentes do depurador.

Para criar uma identificação de objeto para uma variável, a variável com o botão direito e selecione Verifique a identificação do objeto. 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 identificação de objeto.

Quando um ponto de interrupção é alcançado, você pode digitar o identificador da variável para o Watch janela. O depurador exibe o valor da identificação do objeto, e você pode expandir e inspecioná-la exatamente como qualquer outra variável.

Você pode usar a identificação de objeto para definir um ponto de interrupção em um método de uma instância específica. Por exemplo, suponha que você tem um objeto que é 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 de instância 5# da seguinte maneira:

((CMyType) 5#).aMethod

Você também pode usar a identificação do objeto em uma condição de ponto de interrupção. O exemplo a seguir mostra como você pode testar a identificação 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

Guia para o depurador