Compartilhar via


Início Rápido: Depurar com C++ usando o depurador do Visual Studio

O depurador do Visual Studio fornece muitos recursos poderosos para ajudá-lo a depurar seus aplicativos. Este tópico fornece uma maneira rápida de aprender alguns dos recursos básicos.

Criar um novo projeto

  1. Abra o Visual Studio e crie um projeto.

    Se a janela Iniciar ainda não estiver aberta, selecione Arquivo > Janela Iniciar. Na janela Iniciar, selecione Criar um novo projeto. Na caixa de pesquisa, digite "Projeto vazio" e, em seguida, selecione o modelo de Projeto Vazio do C++.

    Se você não vir o modelo de projeto, abra o Instalador do Visual Studio. Escolha a carga de trabalho Desenvolvimento para Desktop com C++, e, em seguida, escolha Modificar.

    O Visual Studio cria o projeto.

    Criar um novo arquivo de origem chamado MyDbgApp.cpp

  2. Em MyDbgApp.cpp, substitua o código a seguir

    int main()
    {
        return 0;
    }
    

    com esse código (não remova #include "stdafx.h"):

    #include <list>
    #include <iostream>
    
    using namespace std;
    
    void doWork()
    {
        list <int> c1;
    
        c1.push_back(10);
        c1.push_back(20);
    
        const list <int> c2 = c1;
        const int &i = c2.front();
        const int &j = c2.front();
        cout << "The first element is " << i << endl;
        cout << "The second element is " << j << endl;
    
    }
    
    int main()
    {
        doWork();
    }
    

Definir um ponto de interrupção

Um ponto de interrupção é um marcador que indica onde o Visual Studio deve suspender seu código em execução para que você possa dar uma olhada nos valores das variáveis ou no comportamento da memória ou se um branch de código está sendo executado ou não. É o recurso mais básico na depuração.

  1. Para definir o ponto de interrupção, clique na margem à esquerda da chamada da função doWork (ou selecione a linha de código e pressione F9).

    Definir um ponto de interrupção

  2. Agora pressione F5 (ou escolha Depurar > Iniciar Depuração).

    Atingir um ponto de interrupção

    O depurador pausa no local em que você define o ponto de interrupção. A instrução em que o depurador e a execução do aplicativo são pausados é indicada pela seta amarela. A linha com a chamada de função doWork ainda não foi executada.

    Dica

    Se você tiver um ponto de interrupção em um loop ou recursão ou se tiver muitos pontos de interrupção que percorre com frequência, use um ponto de interrupção condicional para garantir que seu código seja suspenso SOMENTE quando condições específicas forem atendidas. Um ponto de interrupção condicional economiza tempo e também pode facilitar a depuração de problemas difíceis de reproduzir.

    Ao tentar depurar falhas relacionadas à memória no C++, você também pode usar pontos de interrupção para inspecionar endereços de memória (procure valores nulos) e contagens de referência.

Há comandos diferentes para instruir o depurador a continuar. Mostramos um comando de navegação de código útil que está disponível a partir do Visual Studio 2017.

Enquanto o código estiver em pausa no ponto de interrupção, passe o mouse sobre a instrução c1.push_back(20) até que o botão verde Executar com um cliqueExecutar com um Clique apareça e, então, pressione o botão Executar com um clique.

Executar com um clique

O aplicativo continua a execução, chamando doWorke pausa na linha de código em que você clicou no botão.

Os comandos comuns de teclado usados para percorrer o código incluem F10 e F11. Para obter instruções mais detalhadas, consulte Uma primeira visão do depurador.

Inspecionar variáveis em uma datatip

  1. Na linha de código atual (indicada pelo ponteiro de execução amarelo), passe o mouse sobre o objeto c1 com o mouse para mostrar uma datatip.

    Exibir uma datatip

    A datatip mostra o valor atual da variável c1 e permite que você inspecione suas propriedades. Ao depurar, se você vir um valor que não espera, provavelmente haverá um bug nas linhas de código anteriores ou de chamada.

  2. Expanda a datatip para examinar os valores de propriedade atuais do objeto c1.

  3. Se desejar fixar a datatip para poder continuar vendo o valor de c1 enquanto executa código, clique no pequeno ícone de marcador. (É possível mover a datatip fixada para uma localização conveniente.)

Editar código e continuar debugando

Se você identificar uma alteração que deseja testar em seu código enquanto estiver no meio de uma sessão de depuração, também poderá fazer isso.

  1. Clique na segunda instância de c2.front() e altere c2.front() para c2.back().

  2. Pressione F10 (ou Depurar > Passo a passo) algumas vezes para avançar o depurador e executar o código editado.

    Editar e continuar

    F10 avança o depurador uma instrução por vez, mas depura as funções passo a passo, em vez de intervir nelas (o código que você ignora ainda é executado).

Para obter mais informações sobre como usar editar e continuar e sobre limitações de recursos, consulte Editar e Continuar.

Próximas etapas

Neste tutorial, você aprendeu a iniciar o depurador, percorrer o código e inspecionar variáveis. Talvez você queira obter uma visão de alto nível dos recursos do depurador, com links para mais informações.