Aprendendo a utilizar o GNU Debugger (parte 1)

Em programação, como as vezes não temos como saber onde pode estar aquele erro maldito, um bom depurador pode ser o nosso melhor amigo. Nesse artigo falarei de breakpoints: o que são, como definí-los, porque utilizá-los e também outros comandos como o list, next, run e o print.

[ Hits: 141.689 ]

Por: Ricardo Rodrigues Lucca em 26/01/2004 | Blog: http://aventurasdeumdevop.blogspot.com.br/


Encerrando e pedindo ajuda no gdb



Uma vez iniciado o gdb, o prompt muda e temos três formas de sair:
  • Digitando "quit";
  • Digitando "q";
  • Pressionando CONTROL+D.
Você deve ter percebido que a primeira e a segunda opção são parecidas. É isso mesmo! Na verdade elas são a mesma opção, pois o gdb nos permite fazer abreviações dos comandos, desde que isso não gere ambiguidade com outro comando!

Para terminar essa página gostaria de dizer que podemos conseguir ajuda do programa em tempo de execução digitando help. Sendo que o help ainda aceita como parâmetro "algo" que queiramos saber mais a respeito.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Iniciando
   3. Encerrando e pedindo ajuda no gdb
   4. gdb e gcc
   5. Carregamento e execução
   6. Um exemplo simples
   7. List, BreakPoints e Next
Outros artigos deste autor

Como posso recuperar o boot loader?

Linux no Rio Grande do Sul

Criando um servidor de Ultima Online

Como recuperar a senha o root

Ponteiros void na linguagem C

Leitura recomendada

Criação e uso de um interpretador de script BrainFuck em C++

Criando programas com suporte a arquivos de configuração com a libConfuse

Utilizando a biblioteca NCURSES - Parte I

Tutorial OpenGL

Aleatoriedade em C

  
Comentários
[1] Comentário enviado por jose_maria em 20/05/2004 - 10:53h

Parabéns pelo artigo. Eu estava realmente procurando informações de como usar o gdb.
Mas eu fiquei com algumas dúvidas:
- Eu não consegui executar o comando ctrl+pipe, simplesmente não aconteceu nada. Eu também não entendi para que serve o comando.
- O comando list não funcionou no meu gdb, fica assim:
(gdb) list
1 ../sysdeps/i386/elf/start.S: No such file or directory.
in ../sysdeps/i386/elf/start.S

Valeu cara.

[2] Comentário enviado por jllucca em 20/05/2004 - 20:54h

CTRL+PIPE é usado para interromper o programa e gerar um arquivo core. Se o arquivo não for criado experimente fazer um "ulimit -c 99000" porque normalmente o pessoal gosta de deixar o limite dos arquivos cores para "0"(Zero) o que impossibilita a criação deles.

Quanto ao problema com o gdb estou com um igual na faculdade. Mas, quando descobrir como resolver posto aqui. A primeira coisa normalmente que agente vê se esta "OK" é vermos se compilamos os programas usando a flag "-g". To me sentido muito mal por não ter como usar o gdb, o jeito é fazer testes...

[3] Comentário enviado por jllucca em 26/05/2004 - 12:57h

Quanto ao problema com o GDB, realmente era a flag "-g". Fiz testes aqui e consegui depurar o programa certinho fazendo :

$ g++ program.cpp -o programname -g
$ gdb programname
(gdb) list

Sem erros, enquanto que:
$ make clean
$ make all
$ gdb promname
(gdb) list
1 ../sysdeps/i386/elf/start.S: No such file or directory.
in ../sysdeps/i386/elf/start.S

Assim, estou tentando dinovo organizar o meu Makefile porque eh ele o gerador de caso. Quanto ao seu programa se quiser conversar por email fica muito melhor!

[]'s


[4] Comentário enviado por engos em 25/06/2004 - 11:42h

Legal o artigo, mas você não o encerrou muito cedo?

Acho que ficou faltando comentar que não é necessário ser um arquivo de core para debugar o programa, sem contar que poderia ter sido colocado mais de um breakpoint ou como remover os breakpoints.

Ficou bem redigido e de fácil entendimento, aconselho a postar um artigo complementar que explore mais o gdb, principalmente outras opções, qualquer coisa posso ajudar.

[]s

[5] Comentário enviado por jllucca em 27/07/2004 - 00:24h

Opa,

sobre o artigo ter acabado meio cedo. Realmente, estou pensando em escrever uma segunda parte. Mas, nada muito apressada que nem a segunda parte do void que como voce mesmo disse e depois eu fui ver realmente passa uma impressão meio vaga.

[]'s

[6] Comentário enviado por wildtux em 16/01/2014 - 12:13h

Estou usando o gdb tanto no Linux quanto no cygwin. Muito bom o artigo. Já vi a parte 2 também, ficou realmente mais esclarecedora que a primeira, claro sem desmerecer a primeira. Boa iniciativa parabéns.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts