Exercício – Definir pontos de interrupção
Os pontos de interrupção são usados para pausar a execução durante o processo de depuração. Isso permite que você acompanhe as variáveis e examine a sequência na qual o código é executado. Os pontos de interrupção são uma excelente maneira de iniciar o processo de depuração.
Definir um ponto de interrupção
Anteriormente neste módulo, você concluiu um exercício em que executou um aplicativo no depurador. O aplicativo exibia "mensagens de saudação" no painel CONSOLE DEBUG. No final do exercício, você notou que o código repete a saudação de Andrew de uma maneira inesperada.
Neste exercício, você usará um ponto de interrupção para ajudar a identificar o problema.
Verifique se o arquivo Program.cs contém o seguinte exemplo de código:
/* This code uses a names array and corresponding methods to display greeting messages */ string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" }; string messageText = ""; foreach (string name in names) { if (name == "Sophia") messageText = SophiaMessage(); else if (name == "Andrew") messageText = AndrewMessage(); else if (name == "AllGreetings") messageText = SophiaMessage(); messageText = messageText + "\n\r" + AndrewMessage(); Console.WriteLine(messageText + "\n\r"); } bool pauseCode = true; while (pauseCode == true); static string SophiaMessage() { return "Hello, my name is Sophia."; } static string AndrewMessage() { return "Hi, my name is Andrew. Good to meet you."; }Use as ferramentas do depurador do Visual Studio Code para definir um ponto de interrupção na primeira linha de código dentro do
foreachloop.
Dica
Uma opção fácil para ativar/desativar um ponto de interrupção é selecionar (clique à esquerda) a área à esquerda do número de linha. Os pontos de interrupção também podem ser definidos usando o
Runmenu e usando atalhos de teclado.No menu Executar, selecione Iniciar Depuração.
Observe que a execução de código pausa no ponto de interrupção e que a linha de código atual está realçada no Editor.

Na barra de ferramentas Controles de depuração , selecione Entrar.
Você pode passar o ponteiro do mouse sobre os botões na barra de ferramentas de controles de depuração para exibir os rótulos de botão.
Observe que a execução de código avança para a seguinte linha de código e pausa:
messageText = SophiaMessage();Essa linha de código atribui o valor retornado do
SophiaMessagemétodo à variável de cadeia de caracteresmessageText.Reserve um momento para considerar por que selecionar Step Into produziu esse resultado.
- O botão Intervir é usado para avançar para a próxima instrução executável.
- Como o primeiro elemento no
namesarray éSophiae a instruçãoifestá verificando o nomeSophia, a expressão resulta emtruee a execução do código é movida para o bloco de código da instruçãoif.
Na barra de ferramentas Controles de depuração , selecione Entrar.
Observe que a execução de código avança para o
SophiaMessagemétodo e pausa.O botão Entrar avançou para a próxima linha de código executável. A próxima linha de código executável não é o número da próxima linha no arquivo, é a próxima instrução no caminho de execução. Nesse caso, a próxima instrução executável é o ponto de entrada para o
SophiaMessagemétodo.Na barra de ferramentas Controles de depuração, selecione Depuração circular.
Observe que a execução de código retorna à linha de código que chamou o
SophiaMessagemétodo e pausa.Reserve um momento para considerar por que a seleção de Step Out produziu esse resultado.
Quando dentro de um método, o botão Sair conclui as linhas restantes do método atual e retorna ao contexto de execução que invocou o método.
Na barra de ferramentas Controles de depuração , selecione Entrar.
Observe que a execução de código avança para a seguinte linha de código e pausa:
messageText = messageText + "\n\r" + AndrewMessage();Reserve um momento para considerar por que a execução avançou para essa linha de código.
Embora o recuo de código implique que essa linha de código faz parte do bloco de código da instrução
else if, isso não é verdadeiro. O uso de chaves para definir os blocos de código{}para essa estruturaif - else ifteria ajudado a evitar esse bug. Conforme o código for escrito, a mensagem de Alberto será adicionada amessageTextcada vez que o loop iterar.
Verificar as atualizações de código
Depois de isolar um problema no código, atualize o código e verifique se o problema foi corrigido.
Na barra de ferramentas de controles de depuração , selecione Parar.
Leve um minuto para corrigir sua lógica de código.
Você tem algumas opções para corrigir o problema identificado em seu código. Por exemplo:
Você pode manter as linhas de código existentes e adicionar chaves
{}à estruturaifpara cada bloco de código.Você pode mesclar as duas linhas de código que seguem a instrução final
else if, formando uma única instrução da seguinte maneira:else if (name == "AllGreetings") messageText = SophiaMessage() + "\n\r" + AndrewMessage();
De qualquer forma, o código atualizado precisa incluir a chamada a
AndrewMessageno bloco de código quandoname == "AllGreetings".No menu Arquivo, selecione Salvar.
Use as ferramentas de interface do usuário do depurador para limpar o ponto de interrupção que você definiu anteriormente.
No menu Executar, selecione Iniciar Depuração.
Verifique se o código agora produz os resultados esperados.
Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you. Hello, my name is Sophia. Hi, my name is Andrew. Good to meet you.Na barra de ferramentas de controles de depuração, selecione Parar.
Parabéns! Você usou com êxito o depurador do Visual Studio Code para isolar e corrigir uma questão de lógica.
Recapitulação
Estes são alguns pontos importantes desta unidade que você deve se lembrar:
- Use pontos de interrupção para pausar a execução de código durante uma sessão de depuração.
- Use Intervir na barra de ferramentas Controles de depuração para observar a próxima linha de código executável.
- Use Depuração circular da barra de ferramentas Controles de depuração para avançar pelo método atual e voltar à linha de código que chamou o método.