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
- Este tutorial funciona com o aplicativo de console que você cria em Criar um aplicativo de console .NET usando o Visual Studio.
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.
Inicie o Visual Studio.
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:
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.
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.
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.
Insira uma cadeia de caracteres na janela do console quando o programa solicitar um nome e pressione Enter.
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.
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.
Se a janela Immediate não estiver visível, exiba-a escolhendo Debug>Windows>Immediate.
Digite
name = "Gracie"
na janela Immediate e pressione a tecla Enter.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.
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.
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 .
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
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 retornartrue
.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.
Selecione Fechar para fechar a caixa de diálogo.
Inicie o programa com a depuração pressionando F5.
Na janela da consola, prima a tecla Enter quando lhe for pedido para introduzir o seu nome.
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étodoConsole.WriteLine
seja executado.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ávelname
é""
, ou String.Empty.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.
Pressione F5 para continuar a execução do programa.
Pressione qualquer tecla para fechar a janela do console e parar a depuração.
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.
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 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. 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#
Visual Basic
Pressionar F11. O Visual Studio destaca a instrução que inclui a atribuição da variável
name
. A janela Locais mostra quename
estánull
, e a janela do console exibe o texto "Qual é o seu nome?".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.
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.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.Pressione F11. O Visual Studio chama o método Console.WriteLine(String, Object, Object). A janela do console exibe a cadeia de caracteres formatada.
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.
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.
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.