Partilhar via


Guia de 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 forma rápida de aprender algumas das funcionalidades básicas.

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 selecione o modelo Projeto vazio C++.

    Se não vir o modelo de projeto, abra o Visual Studio Installer. Escolha as tarefas de desenvolvimento de área de trabalho com C++, depois escolha Modificar.

    Visual Studio cria o projeto.

    Criar um novo ficheiro fonte chamado MyDbgApp.cpp

  2. No MyDbgApp.cpp, substitua o seguinte código

    int main()
    {
        return 0;
    }
    

    com este código (não remover #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 breakpoint é um marcador que indica onde o Visual Studio deve suspender o seu código em execução para que possa verificar os valores das variáveis, o comportamento da memória ou se um determinado ramo de código está a ser executado. É o recurso mais básico na depuração.

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

    Definir um ponto de paragem

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

    Atingiu um ponto de interrupção

    O depurador pausa onde defines o ponto de interrupção. A declaração onde o depurador e a execução da aplicação estão pausados é indicada pela seta amarela. A linha com a chamada de doWork função ainda não foi executada.

    Sugestão

    Se tiver um ponto de interrupção num ciclo ou numa recursão, ou se tiver muitos pontos de interrupção pelos quais passa frequentemente, use um ponto de interrupção condicional para garantir que o seu código é suspenso SOMENTE quando condições específicas forem satisfeitas. 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 em C++, você também pode usar pontos de interrupção para inspecionar valores de endereço (procure NULL) e contagens de referência.

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

Enquanto estiver pausado no ponto de interrupção, passe o rato sobre a instrução c1.push_back(20) até que o botão verde Run to ClickRun to Click apareça e, em seguida, pressione o botão Run to Click.

Correr para clicar

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

Os comandos comuns do teclado usados para percorrer o código incluem F10 e F11. Para instruções mais detalhadas, consulte Primeira olhar sobre o depurador.

Inspecionar variáveis em uma dica de dados

  1. Na linha de código atual (marcada pelo ponteiro de execução amarelo), passe o rato sobre o objeto c1 para mostrar uma dica de dados.

    Exibir uma dica de dados

    A dica de dados mostra-lhe o valor atual da variável c1 e permite-lhe inspecionar as suas propriedades. Ao depurar, se vir um valor inesperado, provavelmente tem um erro nas linhas de código anteriores ou de chamada.

  2. Expanda a dica de dados para ver os valores atuais das propriedades do objeto c1.

  3. Se quiser fixar o tooltip para que possa continuar a ver o valor de c1 enquanto executa o código, clique no pequeno ícone de alfinete. (Pode mover a dica de dados fixada para um local conveniente.)

Edite o código e continue a depurar

Se identificar uma alteração que deseja testar no seu código durante uma sessão de depuração, também pode fazê-lo.

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

  2. Pressione F10 (ou Debug > Step Over) algumas vezes para avançar o depurador e executar o código editado.

    Editar e continuar

    F10 avança o depurador uma instrução de cada vez, mas passa por cima das funções em vez de entrar nelas (o código que você ignora ainda é executado).

Para mais informações sobre o uso de editar e continuar e sobre as limitações de funcionalidades, consulte Editar e Continuar.

Próximos passos

Neste tutorial, você aprendeu como iniciar o depurador, percorrer o código e inspecionar variáveis. Pode querer ter uma visão geral das funcionalidades do depurador, juntamente com links para mais informações.