Partilhar via


Inspecionar variáveis e valores de retorno no depurador do Visual Studio

Quando você tenta depurar um problema, geralmente está tentando descobrir se as variáveis estão armazenando os valores que você espera que elas tenham em um determinado estado do aplicativo. Alguns dos recursos mais úteis do depurador são aqueles que permitem inspecionar variáveis.

Este artigo mostra como inspecionar variáveis e exibir valores de retorno usando o depurador no Visual Studio. O depurador fornece várias maneiras convenientes de executar essas tarefas, incluindo o seguinte:

  • No editor de códigos, é possível exibir dicas de dados e valores de retorno em linha
  • Nas janelas do depurador (janelas Autos, Locais e Monitoramento), você pode exibir valores de variáveis
  • Em visualizadores, você pode exibir cadeias de caracteres grandes ou objetos .NET complexos

Esses recursos só estão disponíveis durante o debugging. Para saber como iniciar uma sessão de depuração, consulte Iniciar depuração e entrar no modo de paragem.

Observação

Se esta é a primeira vez que você tenta depurar código, talvez queira ler Depuração para iniciantes absolutos e técnicas e ferramentas de depuração antes de passar por este artigo.

Exibir variáveis no editor de código

Muitas vezes, ao depurar, tu procuras uma forma rápida de verificar os valores das propriedades nos objetos no editor de código, e as sugestões de dados são uma boa forma de o fazer.

Enquanto estiver pausado no depurador, mova o rato sobre um objeto e irá ver o seu valor ou o seu valor de propriedade padrão.

Visualizar uma dica de dados

Se a variável tiver propriedades, você poderá expandir o objeto para ver todas as suas propriedades.

Para obter informações detalhadas sobre como usar dicas de dados, consulte Exibir valores de dados em dicas de dados.

Exibir valores de retorno embutidos de chamadas de método no editor de código

No código .NET e C++, é possível examinar os valores de retorno ao passar por cima ou sair de uma chamada de método, o que pode ser útil quando o valor de retorno não está armazenado numa variável local. Um método pode ser usado como um parâmetro ou como o valor de retorno de outro método.

A partir do Visual Studio 2022 versão 17.12, você pode exibir valores de retorno de chamadas de método em linha e não apenas na janela Autos.

Captura de tela mostrando os valores de retorno de chamadas de método.

Com o Copilot ativado, também podes obter assistência específica relacionada ao valor de retorno em linha usando o botão Perguntar ao Copilot que aparece na dica de dados para o valor de retorno.

Captura de ecrã mostrando os valores de retorno dos métodos chamados com o ícone Copilot.

O depurador também exibe valores pós-retorno embutidos, mostrando o valor de retorno no final da linha de código onde ele retornou.

Captura de ecrã exibindo os valores após o retorno.

Você pode clicar com o botão direito do mouse em um valor de retorno embutido e selecionar opções para o tipo de valores de retorno que deseja mostrar embutido.

Captura de tela mostrando opções para visualizar valores de retorno.

Definir uma monitorização em variáveis

Você pode usar uma janela de observação para especificar uma variável (ou uma expressão) que deseje monitorizar.

Durante a depuração, clique com o botão direito do mouse em um objeto no editor de códigos e escolha Adicionar inspeção. Abre-se uma janela de observação.

Janela de observação

Neste exemplo, você tem um conjunto de observação no objeto e pode ver sua alteração de valor à medida que se move pelo depurador. Ao contrário das outras janelas variáveis , as janelas Watch sempre mostram as variáveis que você está assistindo (elas ficam acinzentadas quando fora do escopo).

Para obter informações detalhadas, consulte Definir um relógio usando o Watch e o QuickWatch Windows.

Ver valores em linha

No código .NET e C++, o Visual Studio exibe o resultado da avaliação em linha para o seguinte: if instruções, loops e valores de parâmetros de função.

Para uma if instrução, o Visual Studio exibe o valor em linha à direita da condição em si.

Captura de tela que mostra valores embutidos para instruções if.

Para uma instrução loop, o valor em linha aparece da seguinte maneira.

Captura de tela que mostra valores embutidos para instruções de loop.

Para parâmetros de função, o valor em linha também aparece à direita.

Se você tem Copilot, você pode obter assistência de IA para a avaliação. Passe o cursor sobre a condição e selecione Analisar com Copilot. O Copilot não apenas divide a condição em suas subexpressões, mas também ajuda a analisar valores inesperados ou incorretos, oferecendo informações sobre por que o resultado pode diferir do que você esperava.

Exibir valores de retorno de consultas LINQ

Enquanto você está pausado no depurador, você pode passar o mouse sobre cláusulas individuais ou segmentos de sua consulta LINQ para avaliar o valor de retorno de consulta imediata.

Captura de tela do valor de retorno da consulta LINQ.

Se você tiver o Copilot, poderá obter assistência de IA enquanto passa o mouse sobre a consulta LINQ. Selecione o ícone do GitHub Copilot no final da Dica de Dados para analisar a consulta com o Copilot. Em seguida, o Copilot explica a sintaxe da consulta LINQ e esclarece por que você está obtendo o resultado especificado.

Obtenha assistência de IA

Se você tiver o Copilot, poderá obter assistência de IA enquanto observa variáveis no editor de código ou nas janelas Autos ou Locals. Enquanto estiver depurando, clique com o botão direito do mouse em uma variável e use o botão Ask CopilotCaptura de tela do botão Ask Copilot. Nesse cenário, o Copilot já conhece o contexto da sua pergunta, então você não precisa fornecer contexto no bate-papo. Para obter mais informações, consulte Debug with Copilot.

Inspecionar variáveis nas janelas do depurador (Autos e Locais)

As janelas Autos e Locals mostram valores variáveis enquanto se está a depurar. As janelas só estão disponíveis durante uma sessão de depuração. A janela Autos mostra as variáveis usadas em torno da instrução atual onde o depurador está pausado. A janela Locals mostra variáveis definidas no escopo local, que geralmente é a função ou método atual.

  • Para abrir a janela Autos, durante a depuração, selecione Depurar >Windows>Autosou pressione Ctrl+Alt+V>A.

    A janela Autos está disponível para código C#, Visual Basic, C++ e Python, mas não para JavaScript ou F#.

  • Para abrir a janela Locais, durante a depuração, selecione Depurar>Windows>Locaisou pressione Alt+4.

Matrizes e objetos expansíveis aparecem nas janelas Automáticos e Locais . Selecione a seta à esquerda do nome de uma variável para expandir a exibição para mostrar campos e propriedades. Aqui está um exemplo de um objeto System.IO.FileStream na janela Locals:

Captura de ecrã da janela de locais, com o ficheiro definido como um valor System.IO.FileStream.

Um valor vermelho na janela Locals ou Autos significa que o valor foi alterado desde a última avaliação. A alteração pode ser de uma sessão de depuração anterior ou porque você alterou o valor na janela.

O formato numérico padrão nas janelas do depurador é decimal. Para alterá-lo para hexadecimal, clique com o botão direito do mouse na janela Locals ou Autos e selecione Hexadecimal Display. Essa alteração afeta todas as janelas do depurador.

Editar valores de variáveis na janela Autos ou Locais

Para editar os valores da maioria das variáveis nas janelas Autos ou Locais, clique duas vezes no valor e insira o novo valor.

Você pode inserir uma expressão para um valor, por exemplo, a + b. O depurador aceita a maioria das expressões de linguagem válidas.

No código C++ nativo, talvez seja necessário qualificar o contexto de um nome de variável. Para obter mais informações, consulte operador de contexto (C++).

Atenção

Certifique-se de entender as consequências antes de alterar valores e expressões. Alguns problemas possíveis são:

  • A avaliação de algumas expressões pode alterar o valor de uma variável ou afetar o estado do seu programa. Por exemplo, avaliar var1 = ++var2 altera o valor de var1 e var2. Diz-se que estas expressões têm efeitos secundários. Os efeitos secundários podem causar resultados inesperados se não tiver conhecimento dos mesmos.

  • A edição de valores de vírgula flutuante pode resultar em pequenas imprecisões devido à conversão decimal para binária de componentes fracionários. Mesmo uma edição aparentemente inofensiva pode resultar em alterações em alguns dos bits na variável de ponto flutuante.

Pesquisar na janela Autos ou Locais

Você pode pesquisar palavras-chave nas colunas Nome, Valor e Tipo da janela Autos ou Locals usando a barra de pesquisa acima de cada janela. Pressione ENTER ou selecione uma das setas para executar uma pesquisa. Para cancelar uma pesquisa em curso, selecione o ícone "x" na barra de pesquisa.

Use as setas para a esquerda e para a direita (Shift+F3 e F3, respectivamente) para navegar entre as correspondências encontradas.

Captura de ecrã da janela Pesquisar em Locais.

Para tornar a sua pesquisa mais ou menos completa, utilize a lista pendente Pesquisa Mais Profunda no topo da janela de Autos ou Locais para selecionar quantos níveis de profundidade pretende pesquisar em objetos aninhados.

Fixar propriedades nas janelas Automáticos ou Locais

Observação

Esse recurso é suportado para o .NET Core 3.0 ou superior.

Você pode inspecionar rapidamente objetos pelas suas propriedades nas janelas de Automáticos e Locais com a ferramenta Propriedades Fixáveis . Para usar esta ferramenta, passe o rato sobre uma propriedade e selecione o ícone de alfinete que aparece ou clique com o botão direito do rato e selecione a opção Fixar Membro como Favorito no menu de contexto resultante. Isso move essa propriedade para o topo da lista de propriedades do objeto, e o nome e o valor da propriedade são exibidos na coluna Valor. Para desafixar uma propriedade, selecione novamente o ícone de pino ou escolha a opção Desafixar Membro dos Favoritos no menu de contexto.

pt-PT: Captura de ecrã das propriedades do Fixar na janela de Locais.

Você pode alternar entre nomes de propriedade e filtrar propriedades não fixadas ao visualizar a lista de propriedades do objeto nas janelas de Autos ou Locais. Você pode acessar cada opção selecionando os botões na barra de ferramentas acima das janelas Autos ou Locais.

Captura de ecrã das propriedades favoritas do filtro.

Captura de ecrã de Alternar entre nomes de propriedades.

Alterar o contexto da janela Autos ou Locais

Você pode usar a barra de ferramentas Debug Location para selecionar uma função, thread ou processo desejado, que altera o contexto das janelas Autos e Locals.

Para ativar a barra de ferramentas Local de Depuração, clique em uma área vazia da área da barra de ferramentas e selecione Local de Depuração na lista suspensa ou selecione Exibir>Barras de Ferramentas>Local de Depuração.

Defina um ponto de interrupção e inicie a depuração. Quando o ponto de interrupção é atingido, a execução é interrompida e você pode ver o local na barra de ferramentas Debug Location toolbar.

Captura de tela da barra de ferramentas local de depuração.

Diferenças de linguagem na janela Autos (C#, C++, Visual Basic, Python)

Diferentes linguagens de código exibem diferentes variáveis na janela Autos.

  • Em C# e Visual Basic, a janela Autos exibe qualquer variável usada na linha atual ou anterior. Por exemplo, no código C# ou Visual Basic, declare as seguintes quatro variáveis:

         public static void Main()
         {
            int a, b, c, d;
            a = 1;
            b = 2;
            c = 3;
            d = 4;
         }
    

    Defina um ponto de interrupção na linha c = 3;e inicie o depurador. Quando a execução for pausada, a janela Autos exibirá:

    Captura de ecrã da janela Autos, com o valor de c definido como 0.

    O valor de c é 0, porque a linha c = 3 ainda não foi executada.

  • Em C++, a janela Autos exibe as variáveis usadas em pelo menos três linhas antes da linha atual onde a execução é pausada. Por exemplo, no código C++, declare seis variáveis:

         void main() {
             int a, b, c, d, e, f;
             a = 1;
             b = 2;
             c = 3;
             d = 4;
             e = 5;
             f = 6;
         }
    

    Defina um ponto de interrupção na linha e = 5; e execute o depurador. Quando a execução parar, a janela Autos exibirá:

    Captura de tela da janela Autos, com a linha realçada que mostra o int c com um valor de 3.

    A variável e não foi inicializada, porque a linha e = 5 ainda não foi executada.

Ver valores de retorno na janela Automáticos

No exemplo a seguir, esse código C# adiciona os valores de retorno de duas funções:

static void Main(string[] args)
{
    int a, b, c, d;
    a = 1;
    b = 2;
    c = 3;
    d = 4;
    int x = sumVars(a, b) + subtractVars(c, d);
}

private static int sumVars(int i, int j)
{
    return i + j;
}

private static int subtractVars(int i, int j)
{
    return j - i;
}

Para visualizar os valores de retorno das chamadas dos métodos sumVars() e subtractVars() na janela Autos:

  1. Defina um ponto de interrupção na linha int x = sumVars(a, b) + subtractVars(c, d);.

  2. Inicie a depuração e, quando a execução parar no ponto de interrupção, selecione Step Over ou pressione F10. Você deve ver os seguintes valores de retorno na janela Autos:

Abra um visualizador para inspecionar variáveis

Enquanto você está depurando no Visual Studio, você pode exibir cadeias de caracteres grandes ou objetos complexos com visualizadores internos que tornam os dados mais fáceis de inspecionar. Por exemplo:

Os visualizadores aparecem nas janelas Autos, sugestões de dados e outras janelas do depurador.

Observação

Se precisar inspecionar elementos da UI XAML ou WPF em um visualizador, veja Inspecionar propriedades XAML ao depurar ou Como usar o visualizador de árvore WPF.

Para abrir um visualizador, deve-se estar em pausa durante a depuração. Passe o cursor sobre uma variável que tenha um valor de visualizador suportado e selecione o ícone de lupa VisualizerIcon.

Abrir um visualizador de cadeia de caracteres