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.
Identidade 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
Identidade 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.