Exercício - Definir pontos de interrupção

Concluído

Os pontos de interrupção são usados para pausar a execução durante o processo de depuração. Isso permite que você rastreie variáveis e examine a sequência na qual seu código é executado. Os pontos de interrupção são uma ótima maneira de iniciar o seu processo de depuração.

Definir um ponto de interrupção

No início deste módulo, você concluiu um exercício em que executou um aplicativo no depurador. O aplicativo exibia "mensagens de saudação" no painel DEBUG CONSOLE. 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 ajudá-lo a identificar o problema.

  1. 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.";
    }
    
  2. Use as ferramentas de depurador de código do Visual Studio para definir um ponto de interrupção na primeira linha de código dentro do foreach loop.

    Captura de tela mostrando um ponto de interrupção no código.

    Sugestão

    Uma opção fácil para ativar / desativar um ponto de interrupção é selecionar (clique com o botão esquerdo) a área à esquerda do número da linha. Os pontos de interrupção também podem ser definidos usando o Run menu e usando atalhos de teclado.

  3. No menu Executar, selecione Iniciar Depuração.

  4. Observe que a execução de código pausa no ponto de interrupção e que a linha de código atual é realçada no Editor.

    Captura de tela mostrando a execução de código pausada em um ponto de interrupção.

  5. Na barra de ferramentas Controles de depuração, selecione Step Into.

    Você pode passar o ponteiro do mouse sobre os botões na barra de ferramentas Controles de depuração para exibir os rótulos dos botões.

  6. Observe que a execução de código avança para a seguinte linha de código e pausa:

    messageText = SophiaMessage();
    

    Esta linha de código atribui o valor de retorno do SophiaMessage método para a variável messageTextstring .

  7. Reserve um momento para considerar por que selecionar Step Into produziu esse resultado.

    • O botão Step Into é usado para avançar para a próxima instrução executável.
    • Como o primeiro elemento na names matriz é Sophia e a if instrução está verificando o nome Sophia, a expressão avalia para true e a execução do código entra no bloco de código da instrução if.
  8. Na barra de ferramentas Controles de depuração, selecione Step Into.

  9. Observe que a execução de código avança para o SophiaMessage método e pausa.

    O botão Step Into avançou para a próxima linha de código executável. A próxima linha de código executável não é o próximo número de 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 SophiaMessage método.

  10. Na barra de ferramentas Controles de depuração , selecione Sair.

  11. Observe que a execução de código retorna à linha de código que chamou o SophiaMessage método e pausa.

  12. Reserve um momento para considerar por que selecionar Step out produziu esse resultado.

    Quando dentro de um método, o botão Step out completa as linhas restantes do método atual e, em seguida, retorna ao contexto de execução que invocou o método.

  13. Na barra de ferramentas Controles de depuração, selecione Step Into.

  14. Observe que a execução de código avança para a seguinte linha de código e pausa:

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. Reserve um momento para considerar por que a execução avançou para essa linha de código.

    Embora o recuo do código implique que essa linha de código faz parte do bloco de código para a else if instrução, ela não é. Usar chaves {} para definir os blocos de código para esta if - else if estrutura teria ajudado a evitar este erro. À medida que o código é escrito, a mensagem de Andrew será adicionada a messageText cada 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.

  1. Na barra de ferramentas Controles de depuração , selecione Parar.

  2. Reserve um minuto para corrigir a lógica do código.

    Você tem algumas opções para corrigir o problema identificado em seu código. Por exemplo:

    • Você poderia manter as linhas de código existentes e adicionar chaves à estrutura de 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, seu código atualizado deve incluir a chamada para AndrewMessage dentro do bloco de código quando name == "AllGreetings".

  3. No menu File (Ficheiro), selecione Save (Guardar).

  4. Use as ferramentas da interface do usuário do depurador para remover o ponto de interrupção anteriormente definido.

  5. No menu Executar, selecione Iniciar Depuração.

  6. 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.
    
  7. Na barra de ferramentas Controles de depuração , selecione Parar.

Parabéns! Você usou com êxito o depurador de código do Visual Studio para ajudá-lo a isolar e corrigir um problema de lógica.

Recapitulação

Aqui estão algumas coisas importantes para lembrar desta unidade:

  • Use pontos de interrupção para pausar a execução de código durante uma sessão de depuração.
  • Use Step Into na barra de ferramentas Debug controls para observar a próxima linha de código executável.
  • Use Step out da barra de ferramentas Debug controls para avançar pelo método atual e voltar para a linha de código que chamou o método.