Guia de início rápido: depurar com C++ usando o depurador do Visual Studio

Neste Quickstart, explora como usar o depurador do Visual Studio para depurar o seu código nativo em C++. Este artigo oferece uma forma rápida de aprender algumas das funcionalidades básicas para trabalhar no depurador.

Se não tiveres Visual Studio, podes instalar a versão de teste grátis na página de Downloads do Visual Studio.

Criar um novo projeto

Começa por criar um novo projeto, para teres algum código para verificar no depurador.

  1. Abra o Visual Studio e crie um novo projeto.

    • Se a Janela Inicial não estiver aberta, selecione Ficheiro>Janela Inicial.

    • Na janela de Iniciar, selecione Criar um novo projeto.

  2. Na janela Criar um novo projeto , defina os filtros e procure um modelo de projeto.

    • Na caixa Procurar modelos , introduza vazia.

    • Abra a lista pendente Idioma e selecione C++.

  3. Na lista de resultados, selecione o modelo Empty Project para C++ e depois selecione Next.

    Se não vires o modelo Empty Project para C++, seleciona a opção Continuar sem código.

    1. Selecione ferramentas>Obter ferramentas e funcionalidades... , que abre o Instalador Visual Studio.

    2. Na janela do Instalador, selecione a caixa de seleção para o desenvolvimento de ambiente de trabalho com carga de trabalho em C++ e depois selecione Modificar.

      A sua instalação do Visual Studio atualiza-se para incluir a carga de trabalho C++ selecionada.

    3. Após a atualização terminar, selecione Ficheiro>Janela Inicial e siga as instruções anteriores para selecionar o modelo necessário.

  4. Configure o novo projeto:

    1. Introduza um nome Project e nome da solução, ou use os valores padrão.

    2. Utilize a Localização predefinida ou selecione Procurar (...) para criar o projeto numa pasta diferente.

    3. Selecione Criar.

    O Visual Studio cria o seu novo projeto e adiciona os ficheiros do projeto na pasta especificada.

Adicionar um ficheiro de projeto

Adiciona um ficheiro de código para teres conteúdo para testar no depurador.

  1. No painel Explorador de Soluções, clique com o botão direito no seu <nomedo do projeto> e selecione Adicionar>Novo Item.

    Se não vires o painel Explorador de Soluções, seleciona View>Explorador de Soluções.

  2. No diálogo Adicionar novo item , introduza o nome do ficheiro MyDbgApp.cpp e depois selecione Adicionar.

    O ficheiro abre no editor de código.

  3. Adicione o seguinte código ao novo ficheiro.

    #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();
    }
    
  4. Guarde as alterações dos ficheiros com o atalho de teclado Ctrl+S .

Definir um ponto de interrupção

Um breakpoint é um marcador que indica onde Visual Studio deve suspender o seu código em execução. Quando um ponto de interrupção é definido, pode olhar para os valores atuais das variáveis, examinar o comportamento da memória e verificar se um ramo específico de código está a funcionar. Os pontos de interrupção são a funcionalidade mais básica na depuração.

  1. Para definir um ponto de interrupção, localize a chamada para a função doWork() no código e depois selecione a margem esquerda na mesma linha.

    Quando é definido um ponto de interrupção, é apresentado um ponto vermelho na margem esquerda da linha de código correspondente.

    Captura de ecrã que mostra como definir um ponto de interrupção no depurador Visual Studio.

    Captura de ecrã que mostra como definir um ponto de interrupção no depurador Visual Studio 2022.

  2. Comece a depurar usando o atalho de teclado F5 (ou selecione Depurar>Iniciar Depuração).

    Captura de ecrã que mostra o depurador pausado num ponto de interrupção definido em Visual Studio.

    Captura de ecrã que mostra o depurador pausado num ponto de interrupção definido em Visual Studio 2022.

    A execução do código pausa imediatamente antes da chamada à doWork() função.

    O depurador pausa onde defines o ponto de interrupção. Uma seta amarela identifica a instrução onde o depurador pausa a execução da aplicação.

    Sugestão

    Quando está a depurar falhas relacionadas com a memória no seu código C++, também pode usar pontos de interrupção para inspecionar valores de endereço (procure NULL) e contagens de referências.

Definir pontos de interrupção condicionais

Se definir um ponto de interrupção num loop ou recursão, ou se tiver muitos pontos de interrupção que passa frequentemente, use um ponto de interrupção condicional.

Esta abordagem ajuda a garantir que o seu código é suspenso apenas quando condições específicas são cumpridas. Um ponto de interrupção condicional pode poupar tempo e também facilitar a depuração de problemas difíceis de reproduzir.

Analisa o teu código

O Visual Studio oferece várias formas diferentes de instruir o depurador a continuar com a execução da aplicação. O exemplo seguinte mostra um comando útil para percorrer o seu código.

Enquanto o código está em pausa no ponto de interrupção, passe o rato sobre a instrução c1.push_back(20) até aparecer o ícone verde Executar até ao clique (Executar até aqui) Seleciona o ícone.

Captura de ecrã que mostra como trabalhar com a ação Run to Click no depurador Visual Studio.

Enquanto o código está pausado no ponto de interrupção, passe o rato sobre a instrução c1.AddLast(20) até ver o ícone verde Executar para clicar (Executar execução para aqui). Seleciona o ícone.

Captura de ecrã que mostra como utilizar a ação

A aplicação continua a execução, chamando doWork, e pausa na linha de código onde selecionou Executar para clicar.

Os comandos comuns do teclado usados para percorrer o código incluem F10 e F11. Para instruções mais detalhadas, consulte Visão geral do depurador Visual Studio.

Inspecionar variáveis numa sugestão de dados

Pode inspecionar o estado das suas variáveis através da funcionalidade descrição de dados.

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

    Captura de ecrã que mostra como ver descrições de dados para variáveis no código no depurador do Visual Studio.

    Captura de ecrã que mostra como visualizar descrições de dados para variáveis no código no depurador do Visual Studio 2022.

    A informação de dados c1 mostra o valor atual da variável e permite-lhe inspeccionar as suas propriedades.

    Quando estás a depurar, se vires um valor inesperado para uma variável, provavelmente tens um bug. O bug pode estar no código que faz a chamada à variável ou na linha anterior.

  2. Expanda a informação para examinar os valores atuais da propriedade do objeto c1.

  3. Para continuar a verificar o valor de c1 enquanto o código é executado, selecione o ícone do pino na ponta de dados.

    A ação de afixar mantém a descrição de dados aberta. À medida que o código é executado, o valor na ponta fixada muda para mostrar o estado atual do objeto observado.

    Podes mover a ponta fixada para qualquer local do IDE, por isso não te impede de observar outros itens durante a depuração.

Ativar o recarregamento a quente durante a depuração

Enquanto estás a depurar, se vires uma alteração que queiras testar no teu código, podes usar a funcionalidade Hot Reload (anteriormente chamada Editar e Continuar).

  1. Selecione a segunda instância da c2.front() instrução e altere o código para c2.back().

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

    Animação que mostra como editar e continuar com a funcionalidade 'Hot Reload' no depurador Visual Studio.

    Animação que mostra como editar e continuar no depurador Visual Studio 2022.

    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 a funcionalidade e limitações, consulte Configure Hot Reload.

Passo seguinte