Partilhar via


Tutorial: Depurar uma aplicação de consola .NET

Este tutorial apresenta as ferramentas de depuração disponíveis no Visual Studio.

Importante

Todos os atalhos de teclado baseiam-se nos valores predefinidos do Visual Studio. Os seus atalhos de teclado podem variar; para mais informações, veja Atalhos de teclado em Visual Studio.

Este tutorial apresenta as ferramentas de depuração disponíveis no Visual Studio Code para trabalhar com aplicações .NET.

Este tutorial apresenta as ferramentas de depuração disponíveis no GitHub Codespaces para trabalhar com aplicações .NET.

Pré-requisitos

Este tutorial funciona com a aplicação de consola que crias em Cria uma .NET aplicação de consola.

Utilize a configuração de compilação de depuração

Debug e Release são as configurações de compilação incorporadas da Visual Studio. Use a configuração de compilação Debug para depuração e a configuração de compilação Release para a distribuição final.

Na configuração Debug, um programa é compilado com informações de depuração simbólicas completas e sem otimização. A otimização complica a depuração, porque a relação entre o código-fonte e as instruções geradas é mais complexa. A configuração de release de um programa não inclui informações de depuração simbólicas e é totalmente otimizada.

Por padrão, o Visual Studio usa a configuração de compilação Debug, por isso não é necessário alterá-la antes de fazer depuração.

  1. Inicia o Visual Studio.

  2. Abra o projeto que criou em Criar uma aplicação de consola .NET.

    A configuração de compilação atual é mostrada na barra de ferramentas. A imagem seguinte da barra de ferramentas mostra que o Visual Studio está configurado para compilar a versão Debug da aplicação:

    Barra de ferramentas do Visual Studio com depuração destacada

Definir um ponto de interrupção

Um ponto de interrupção interrompe temporariamente a execução da aplicação antes de a linha com o ponto de interrupção ser executada.

  1. Coloque um ponto de interrupção na linha que exibe o nome, a data e a hora, clicando na margem esquerda da janela de código nessa linha. A margem esquerda está à esquerda dos números de linha. Outras maneiras de definir um ponto de interrupção são colocando o cursor na linha de código e, em seguida, pressionando F9 ou escolhendo Depurar>Alternar ponto de interrupção na barra de menus.

    Como mostra a imagem seguinte, o Visual Studio indica a linha onde o ponto de interrupção está definido, destacando-o e exibindo um ponto vermelho na margem esquerda.

    Janela do programa Visual Studio com ponto de interrupção definido

  2. Pressione F5 para executar o programa no modo de depuração. Outra maneira de começar a depuração é escolhendo Depurar>Iniciar a depuração no menu.

  3. Insira uma cadeia de caracteres na janela do console quando o programa solicitar um nome e pressione Enter.

  4. A execução do programa para quando atinge o ponto de interrupção e antes de o método Console.WriteLine ser executado. A janela Locals exibe os valores das variáveis definidas no método em execução no momento.

    Captura de ecrã de um ponto de interrupção em Visual Studio

  1. Abra o Visual Studio Code.

  2. Abra a pasta do projeto que criou em Criar uma aplicação de consola .NET.

  3. Abra o arquivo Program.cs .

  4. Defina um ponto de interrupção na linha que mostre o nome, data e hora, clicando na margem esquerda da janela de código. A margem esquerda está à esquerda dos números de linha. Outras formas de definir um ponto de interrupção são pressionar F9 ou escolher Executar>Toggle Breakpoint no menu enquanto a linha de código está selecionada.

    O Visual Studio Code indica a linha onde o ponto de interrupção está definido, mostrando um ponto vermelho na margem esquerda.

    Breakpoint definido

  1. Abra o seu GitHub Codespace que criou em Crie uma aplicação de consola .NET.

  2. Abre o ficheiro HelloWorld.cs .

  3. Defina um ponto de interrupção na linha que mostre o nome, data e hora, clicando na margem esquerda da janela de código. A margem esquerda está à esquerda dos números de linha. Também podes definir um ponto de interrupção pressionando F9 enquanto a linha de código está selecionada.

    Breakpoint definido

Iniciar depuração

A execução do programa tem uma paragem quando atinge o ponto de interrupção, conforme descrito na seção anterior. A janela Locals exibe os valores das variáveis definidas no método em execução no momento.

Debug e Release são as configurações de compilação integradas da .NET. Use a configuração de compilação Debug para depuração e a configuração de compilação Release para a distribuição final.

Por defeito, as definições de lançamento do Visual Studio Code usam a configuração de compilação Debug, por isso não precisas de a alterar antes de depurar.

  1. Abra a vista de Depuração selecionando o ícone de Depuração no menu do lado esquerdo.

    Abra o separador Debug em Visual Studio Code

  2. Selecione Executar e Depurar. Se for solicitado, selecione C# e depois selecione C#: Iniciar projeto de arranque. Outras formas de iniciar o programa em modo de depuração são pressionar F5 ou escolher Executar>Iniciar Depuração no menu.

    Iniciar a depuração

  3. Se for pedido para selecionar Configuração de Lançamento, selecione C#: Debug Active File.

  4. Selecione o separador Debug Console para ver o aviso "Qual é o seu nome?" que o programa mostra antes de esperar por uma resposta.

    Selecione a aba Debug Console

  5. Introduza uma string na janela da Consola de Depuração em resposta ao pedido de um nome e depois pressione Enter.

    A execução do programa pára quando atinge o ponto de interrupção e antes de o método Console.WriteLine ser executado. A secção Locais da janela Variáveis mostra os valores das variáveis definidas no método em execução atual.

    Ponto de interrupção atingido, variáveis locais a mostrar

Por defeito, o GitHub Codespaces usa a configuração de compilação Debug, logo não precisa de a alterar antes de depurar.

  1. Abra a vista de Depuração selecionando o ícone de Depuração no menu do lado esquerdo.

    Abra o separador Debug em Visual Studio Code

  2. Selecione Executar e Depurar. Se solicitado, selecione C# como depurador e depois selecione C#: Debug Active File como configuração de lançamento.

  3. Selecione o separador Debug Console para ver o aviso "Qual é o seu nome?" que o programa mostra antes de esperar por uma resposta.

  4. Introduza uma string na janela da Consola de Depuração em resposta ao pedido de um nome e depois pressione Enter.

    A execução do programa pára quando atinge o ponto de interrupção e antes de o método Console.WriteLine ser executado. A secção Locais da janela Variáveis mostra os valores das variáveis definidas no método em execução atual.

    Ponto de interrupção atingido, variáveis locais a mostrar

Use a janela Imediata

A janela Immediate permite que interajes com a aplicação que está a depurar. Você pode alterar interativamente o valor das variáveis para ver como isso afeta seu programa.

  1. Se a janela Imediate não estiver visível, mostre-a escolhendo Debug>Windows>Immediate.

  2. Digite name = "Gracie" na janela Immediate e pressione a tecla Enter.

  3. Digite currentDate = DateTime.Parse("2026-02-05T20:25:00Z").ToUniversalTime() na janela Immediate e pressione a tecla Enter.

    A janela Immediate exibe o valor da variável string e as propriedades do valor DateTime. Além disso, os valores das variáveis são atualizados na janela Locais.

    Locais e Janelas Imediatas no Visual Studio

  4. Pressione F5 para continuar a execução do programa. Outra maneira de continuar é escolhendo Depurar>Continuar no menu.

    Os valores exibidos na janela do console correspondem às alterações feitas na janela Imediata.

  5. Pressione qualquer tecla para sair da aplicação e parar a depuração.

Usar a Consola de Depuração

A janela da Consola de Depuração permite-lhe interagir com a aplicação que está a depurar. Podes alterar o valor das variáveis para ver como isso afeta o teu programa.

  1. Selecione o separador Debug Console .

  2. Introduza name = "Gracie" na linha de comandos na parte inferior da janela da Consola de Depuração e prima Enter.

    Alterar os valores das variáveis

  3. Enter currentDate = DateTime.Parse("2026-01-28T20:54:00Z").ToUniversalTime() no fundo da janela da Consola de Depuração e pressione Enter.

    A janela Variáveis mostra os novos valores das name variáveis e currentDate .

  4. Continue a execução do programa selecionando o botão Continuar na barra de ferramentas. Outra forma de continuar é pressionar F5.

    Continuar a depurar

    Os valores apresentados na janela da consola correspondem às alterações que fez na Consola de Depuração.

    Terminal que mostra os valores introduzidos

  5. Pressione Enter para sair da aplicação e parar a depuração.

Definir um ponto de interrupção condicional

O programa exibe a cadeia de caracteres que o usuário digita. O que acontece se o usuário não inserir nada? Você pode testar isso com um recurso de depuração útil chamado ponto de interrupção condicional .

  1. Clique com o botão direito do rato no ponto vermelho que representa o ponto de interrupção. No menu de contexto, selecione Condições para abrir a caixa de diálogo Definições do ponto de interrupção. Selecione a caixa Condições se ainda não estiver selecionada.

    Editor de mostrando o painel de configurações de ponto de interrupção - C#

  2. Para a Expressão Condicional, introduza o seguinte código no campo de texto.

    string.IsNullOrEmpty(name)
    
    String.IsNullOrEmpty(name)
    

    Cada vez que o ponto de interrupção é atingido, o depurador chama o método String.IsNullOrWhiteSpace(name) e apenas interrompe nessa linha se a chamada do método retornar true.

    Em vez de uma expressão condicional, pode-se especificar uma contagem de hits , que interrompe a execução do programa antes de uma instrução ser executada um número especificado de vezes. Outra opção é especificar uma condição de filtro , que interrompe a execução do programa com base em atributos como um identificador de thread, nome do processo ou nome do thread.

  3. Selecione Fechar para fechar a caixa de diálogo.

  4. Inicie o programa com a depuração pressionando F5.

  5. Na janela da consola, prima a tecla Enter quando lhe for pedido para introduzir o seu nome.

  6. Como a condição que especificou (name é null ou String.Empty) foi satisfeita, a execução do programa para assim que atinge o ponto de interrupção e antes que o método Console.WriteLine seja executado.

  7. Selecione a janela Locals, que mostra os valores das variáveis que são locais para o método em execução no momento. Neste caso, Main é o método em execução no momento. Observe que o valor da variável name é "", ou String.Empty.

  8. Confirme se o valor é uma cadeia de caracteres vazia inserindo a seguinte instrução na janela Immediate e pressionando Enter. O resultado é true.

    ? name == String.Empty
    
    ? String.IsNullOrEmpty(name)
    

    O ponto de interrogação direciona a janela imediata para avaliar a expressão.

    Janela imediata retornando um valor true após a execução da instrução - C#

  9. Pressione F5 para continuar a execução do programa.

  10. Pressione qualquer tecla para fechar a janela do console e parar a depuração.

  11. Limpe o ponto de interrupção clicando no ponto na margem esquerda da janela de código. Outras maneiras de limpar um ponto de interrupção são pressionando F9 ou escolhendo Depurar > Alternar ponto de interrupção enquanto a linha de código estiver selecionada.

  1. Clique com o botão direito (Ctrl-click no macOS) no ponto vermelho que representa o ponto de interrupção. No menu de contexto, selecione Editar Ponto de Quebra para abrir um diálogo que permita inserir uma expressão condicional.

    Menu de contexto de pontos de interrupção

  2. Selecione Expression no menu suspenso, introduza a seguinte expressão condicional e pressione Enter.

    String.IsNullOrEmpty(name)
    

    Introduza uma expressão condicional

    Cada vez que o ponto de interrupção é atingido, o depurador chama o método String.IsNullOrEmpty(name) e apenas interrompe nessa linha se a chamada do método retornar true.

    Em vez de uma expressão condicional, pode especificar uma contagem de hits, que interrompe a execução do programa antes de uma instrução ser executada um número especificado de vezes. Outra opção é especificar uma condição de filtro , que interrompe a execução do programa com base em atributos como um identificador de thread, nome do processo ou nome do thread.

  3. Inicie o programa com a depuração pressionando F5.

  4. No separador Debug Console , pressione Enter quando for solicitado a inserir o seu nome.

    Como a condição que especificaste (name é null ou String.Empty) foi satisfeita, a execução do programa para quando atinge o ponto de interrupção e antes do método Console.WriteLine ser executado.

    A janela Variáveis mostra que o valor da name variável é "", ou String.Empty.

  5. Confirme que o valor é uma cadeia vazia introduzindo a seguinte instrução no aviso da Consola de Depuração e pressionando Enter. O resultado é true.

    name == String.Empty
    
  6. Selecione o botão Continuar na barra de ferramentas para continuar a execução do programa.

  7. Pressione Enter para sair do programa e parar a depuração.

  8. Limpe o ponto de interrupção clicando no ponto na margem esquerda da janela de código. Outras formas de eliminar um ponto de interrupção são pressionar F9 ou escolher Executar > Toggle Breakpoint no menu enquanto a linha de código está selecionada.

  9. Se receber um aviso de que a condição do ponto de interrupção será perdida, selecione Remover Ponto de Interrupção.

Passo através de um programa

O Visual Studio também permite avançar linha a linha num programa e monitorizar a sua execução. Normalmente, você definiria um ponto de interrupção e seguiria o fluxo do programa através de uma pequena parte do código do programa. Uma vez que este programa é pequeno, você pode percorrer todo o programa.

  1. Defina um ponto de interrupção na linha de código que mostra o prompt "Qual é o seu nome?".

  2. Escolha Depurar>entrar em. Outra maneira de depurar uma instrução de cada vez é pressionando F11.

    O Visual Studio destaca e exibe uma seta ao lado da linha de execução seguinte.

    Visual Studio passo para o método - C#

    Neste ponto, a janela Locals mostra que a matriz está vazia e e têm valores padrão. Além disso, o Visual Studio abriu uma janela de consola em branco.

  3. Pressione F11. Visual Studio destaca a instrução que inclui a atribuição da variável name. A janela Locais mostra que name está null, e a janela do console exibe o texto "Qual é o seu nome?".

  4. Responda ao prompt inserindo uma cadeia de caracteres na janela do console e pressionando Enter. O console não está respondendo e a cadeia de caracteres inserida não é exibida na janela do console, mas o método Console.ReadLine capturará sua entrada.

  5. Pressione F11. Visual Studio destaca a instrução que inclui a atribuição da variável currentDate. A janela Locals mostra o valor retornado pela chamada para o método Console.ReadLine. A janela do console também exibe a cadeia de caracteres inserida no prompt.

  6. Pressione F11. A janela Locals mostra o valor da variável currentDate após a atribuição a partir da propriedade DateTime.Now. A janela do console permanece inalterada.

  7. Pressione F11. Visual Studio chama ao método Console.WriteLine(String, Object, Object). A janela do console exibe a cadeia de caracteres formatada.

  8. Escolha Depurar>Sair. Outra maneira de parar a execução passo a passo é pressionando Shift+F11.

    A janela do console exibe uma mensagem e espera que você pressione uma tecla.

  9. Pressione qualquer tecla para fechar a janela do console e parar a depuração.

O Visual Studio Code também permite avançar linha a linha através de um programa e monitorizar a sua execução. Normalmente, você definiria um ponto de interrupção e seguiria o fluxo do programa através de uma pequena parte do código do programa. Uma vez que este programa é pequeno, você pode percorrer todo o programa.

  1. Defina um ponto de interrupção na linha de código que mostra o prompt "Qual é o seu nome?".

  2. Pressione F5 para iniciar a depuração.

    O Visual Studio Code destaca a linha de ponto de interrupção.

    Neste ponto, a janela de Variáveis mostra que o args array está vazio e name que e currentDate têm valores predefinidos.

  3. Selecione Entrar na barra de depuração ou pressione F11.

    Botão Executar Entrar

    O Visual Studio Code destaca a linha seguinte.

  4. Visual Studio Code executa a Console.WriteLine para o prompt do nome e destaca a linha seguinte de execução. A linha seguinte é a Console.ReadLine para o name. A janela Variáveis mantém-se inalterada, e o separador Terminal mostra o prompt "Qual é o seu nome?".

  5. Selecione Entrar ou pressione F11.

    Visual Studio Code destaca a atribuição de variáveis name. A janela de Variáveis mostra que name ainda está null.

  6. Responda ao pedido introduzindo uma cadeia no separador Terminal e pressionando Enter.

    O separador Debug Console pode não mostrar a cadeia que inseriste enquanto a inseriste, mas o Console.ReadLine método irá captar a tua entrada.

  7. Selecione Entrar ou pressione F11.

    Visual Studio Code destaca a atribuição de variáveis currentDate. A janela Variáveis mostra o valor devolvido pela chamada ao Console.ReadLine método. O separador Terminal mostra a cadeia que introduziu no prompt.

  8. Selecione Entrar ou pressione F11.

    A janela Variáveis mostra o valor da currentDate variável após a atribuição da DateTime.Now propriedade.

  9. Selecione Entrar ou pressione F11.

    Visual Studio Code chama ao método Console.WriteLine(String, Object, Object). A janela do console exibe a cadeia de caracteres formatada.

  10. Selecione Sair ou pressione Shift+F11.

    Botão Sair

    O terminal mostra "Pressione qualquer tecla para sair..."

  11. Carrega em qualquer tecla para sair do programa.

Usar a configuração de compilação Release

Depois de testar a versão de depuração do seu aplicativo, você também deve compilar e testar a versão de lançamento. A versão Release incorpora otimizações do compilador que às vezes podem afetar negativamente o comportamento de um aplicativo. Por exemplo, otimizações de compilador projetadas para melhorar o desempenho podem criar condições de corrida em aplicativos multithreaded.

Para criar e testar a versão Release do seu aplicativo de console, altere a configuração de compilação na barra de ferramentas de Debug para Release.

 barra de ferramentas Visual Studio padrão com a versão destacada

Quando pressiona F5 ou escolhe Build Solution no menu Build, Visual Studio compila a versão Release da aplicação. Você pode testá-lo como fez com a versão de Debug.

Para compilar e testar a versão Release da sua aplicação de consola, abra o Terminal e execute o seguinte comando:

dotnet run --configuration Release

Para compilar e testar a versão Release da sua aplicação de consola, execute o seguinte comando no terminal:

dotnet run --configuration Release HelloWorld.cs

Próximos passos

Neste tutorial, você utilizou ferramentas de depuração. No próximo tutorial, você publica uma versão implantável do aplicativo.