Última atualização:2026-10-12
Depuração de programas C++ com GDB¶
Ao usar o GNU Debugger (GDB) para depurar código C, você descobrirá que ele é o depurador mais popular em sistemas UNIX, usado para depurar programas em C e C++. A seguir, uma explicação simples e clara de como usar o GDB para depurar código C:
Primeiro, na linha de comando, acesse a pasta atual que contém o código e execute o seguinte comando:
gcc -g -Wall code.c -o output
Aqui, a opção -g é necessária para usar a ferramenta GDB. A opção -Wall serve para exibir mensagens de aviso. Isso criará um executável chamado "output".
Em seguida, execute o seguinte comando para abrir o diálogo do GDB e obter as informações de símbolos do arquivo output (ou, simplesmente, para configurar todo o ambiente a fim de depurar o code.c):
gdb output
Os comandos a seguir podem ajudá-lo na depuração:
list: lista o código-fonte.b x: define um breakpoint em x. x pode ser o nome de um módulo ou um número de linha. Por exemplo, x pode ser o nome de uma função como main.r: executa o programa (até o breakpoint) e fornece o resultado. Ou seja, executa o código até o breakpoint e gera o resultado. [Se houver argumentos, use r argumento1 argumento2 argumento3 ...]info breakpoints x: mostra informações detalhadas sobre o breakpoint x.info breakpoints: mostra informações detalhadas sobre todos os breakpoints.delete x: remove o breakpoint x.disable xeenable x: desativam e ativam o breakpoint x.print p: imprime o valor da variável p.display p: exibe o valor da variável p após cada execução (automatizando todo o processo).c: continua a execução do programa (pulando iterações como as de laços for). Usec-iter1para pular a primeira iteração, digitecnovamente para pular a segunda, e assim por diante.- Você também pode usar condições adicionais, como
b x if (y > m), o que significa definir um breakpoint na linha x se o valor de y for maior que m. - O GDB também permite definir breakpoints em vários arquivos. Por exemplo, se o program.c chama uma função definida em function.c, você pode usar
b function.c:xpara definir um breakpoint na linha x de function.c. bt: usado para rastrear o caminho de execução do código. Obtretorna uma lista indexada mostrando os processos pelos quais o código passou. Por exemplo: #0 descrição do processo 0, #1 descrição do processo 1, e assim por diante, onde 0 é o processo mais recente.- Digitar
f xpula para o processo x (f 0pula para o processo 0) e mostra os valores das variáveis no momento da execução da função correspondente. s: usado para entrar em uma função e obter mais detalhes.next: usado para executar o código linha por linha.
Tópicos relacionados¶
- Construindo projetos C++ com Bazel | C++那些事
- Depuração conjunta de Bazel e LLDB | C++那些事
- CMake: introdução e prática | C++那些事
- Introdução ao gerenciamento de pacotes C++ com Conan | C++那些事
- C++ Insights: observação em tempo de compilação | C++那些事
- C++ interativo com Jupyter Notebook | C++那些事
- Converter string para int em C++ | C++那些事
- Macro de depuração dbg-macro em C++ | C++那些事
- Opções de compilação do GCC em detalhes | C++那些事
- Depuração estendida com Python no GDB | C++那些事