Partilhar via


Tutorial: Depurar um aplicativo de console .NET usando o Visual Studio

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

Importante

Todos os atalhos de teclado são baseados nos padrões do Visual Studio. Seus atalhos de teclado podem variar, para obter mais informações, consulte Atalhos de teclado no Visual Studio.

Pré-requisitos

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

Debug e Release são configurações de compilação internas do 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 de depuração, portanto, você não precisa alterá-la antes de depurar.

  1. Inicie o Visual Studio.

  2. Abra o projeto que você criou em Criar um aplicativo de console .NET usando o Visual Studio.

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

    barra de ferramentas do Visual Studio com a depuração realçada

Definir um ponto de interrupção

Um ponto de interrupção interrompe temporariamente a execução do aplicativo antes que a linha com o ponto de interrupção seja 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 a seguir, o Visual Studio indica a linha na qual 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 tela de um ponto de interrupção no Visual Studio

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 Immediate não estiver visível, exiba-a escolhendo Debug>Windows>Immediate.

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

  3. Digite currentDate = DateTime.Parse("2019-11-16T17: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 2019

  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.

    janela Console mostrando os valores inseridos

  5. Pressione qualquer tecla 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 Condicional Expressão, introduza o seguinte código no campo que apresenta o código de exemplo que testa se x é 5.

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

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

Passo através de um programa

Visual Studio também permite ao utilizador percorrer 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. Escolha Depurar>entrar em. Outra maneira de depurar uma instrução de cada vez é pressionando F11.

    O Visual Studio realça e exibe uma seta ao lado da próxima linha de execução.

    C#

    Visual Studio passo para o método - C#

    Visual Basic

    entrar no método do Visual Studio - Visual Basic

    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 console em branco.

  2. Pressione F11. O Visual Studio agora destaca a próxima linha de execução. A janela Locals permanece inalterada e a janela do console permanece em branco.

    C#

    etapa do Visual Studio na fonte do método - C#

    Visual Basic

    etapa do Visual Studio na origem do método - Visual Basic

  3. Pressionar F11. O 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. O 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. O Visual Studio chama o 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.

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 padrão do Visual Studio com versão realçada

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

Próximos passos

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