Ir para o conteúdo

Ú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 x e enable 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). Use c-iter1 para pular a primeira iteração, digite c novamente 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:x para definir um breakpoint na linha x de function.c.
  • bt: usado para rastrear o caminho de execução do código. O bt retorna 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 x pula para o processo x (f 0 pula 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

Comentários