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: 140.839 ]

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


Iniciando



Você pode chamar o GNU Debugger digitando no console o comando "gdb" seguido de um enter (o enter é muito importante :p).

Podemos chamá-lo também passando como parâmetro o executável do programa:

$ ls
ex ex.c

$ gdb ex
GNU gdb 5.2
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-slackware-linux"...
(gdb) _

Assim o gdb já irá carregar o nosso programa. Também é permitido fazermos coisas do tipo:

$ gdb ex 1305
ou
$ gdb ex core

Respectivamente, o primeiro esta dizendo para o gdb usar o processo já existente para o programa e não criar outro. Agora, o segundo diz que iremos analisar aqueles "malditos" arquivos (core) que aparecem do nada no nosso HD. Os arquivos core contém o estado de um processo no momento de uma parada ocasionada por algum erro.

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

Linux Básico - Parte II

Conceitos sobre o X-Window

Usando MySQL na linguagem C

Linux no Rio Grande do Sul

Funcionamento da memória

Leitura recomendada

Substituindo a biblioteca conio.h no Linux usando ncurses curses.h

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

Programando em Qt

Conio.h para Linux

Utilizando a biblioteca NCURSES - Parte III

  
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