GNU Debugger
Origem: Wikipédia, a enciclopédia livre.
GNU Debugger | |
---|---|
Desenvolvedor: | Projecto GNU |
Última versão: | 6.6 / 18 de Dezembro, 2006 |
Gênero | Debugger |
Licença: | GNU General Public License |
Website: | gnu.org/software/gdb/ |
O GNU Debugger, mais conhecido por GDB é um debugger do GNU. Ele é um depurador que pode ser executado em muitos sistemas do tipo Unix e suporta muitas linguagens de programação, como a linguagem C, C++ e FORTRAN.
Índice |
[editar] História
Originalmente escrito por Richard Stallman em 1988, o GDB é um software livre licenciado através da GNU General Public License.
Desde 1990 até 1993 ela foi mantida por John Gilmore enquanto ele trabalhava para a Cygnus Solutions.
[editar] Detalhes técnicos
[editar] Características
O GDB oferece várias facilidades para a depuração de programas. O usuário pode monitorar e alterar valores de variáveis internas do sistema, e até chamar funções de forma independente do fluxo do programa.
Os processadores suportados pelo GDB (até 2003) incluem: Alpha, ARM, H8/300, System/370, System 390, X86 e X86-64, IA-64 "Itanium", Motorola 68000, MIPS,PA-RISC, PowerPC, SuperH, SPARC, VAX.
Também são suportados alguns processadores menos conhecidos como: A29K, ARC, AVR, CRIS, D10V, D30V, FR-30, FR-V, Intel i960, M32R, 68HC11, Motorola 88000, MCORE, MN10200, MN10300, NS32K, Stormy16, V850, VAX, and Z8000. (Em versões novas alguns destes processadores não serão suportados.)
O GDB possui suporte a simuladores para processadores ainda menos conhecidos, como M32R ou V850.
[editar] Limitações
O depurador não contém a sua própria interface gráfica, suportando apenas a interface CUI (Console user interface) do interpretador de comandos. Por outro lado, existem alguns softwares que implementam uma interface gráfica para ele, como o DDD, GDBtk/Insight, Emacs no modo "GUD" ou o Eclipse com o plugin CDT. Estes programas oferecem facilidades similares às encontradas nas IDEs.
Outras ferramentas foram projetadas para trabalharem junto com o GDB, como detectores de memory leaks.
[editar] Uma sessão como exemplo
Este é um exemplo de uma Stack trace de uma sessão GDB para um programa:
GNU gdb Red Hat Linux (6.3.0.0-1.21rh) Copyright 2004 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-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1". (gdb) run Starting program: /home/sam/programming/crash Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xc11000 This program will demonstrate gdb Program received signal SIGSEGV, Segmentation fault. 0x08048428 in function_2 (x=24) at crash.c:22 22 return *y; (gdb) edit (gdb) shell gcc crash.c -o crash -gstabs+ (gdb) run The program being debugged has been started already. Start it from the beginning? (y or n) y warning: cannot close "shared object read from target memory": File in wrong format `/home/sam/programming/crash' has changed; re-reading symbols. Starting program: /home/sam/programming/crash Reading symbols from shared object read from target memory...done. Loaded system supplied DSO at 0xa3e000 This program will demonstrate gdb 24 Program exited normally. (gdb) quit
O programa está sendo executado. Depois que a causa da falha (segmentation fault) é encontrada, o programa é editado. Após corrigido o programa é recompilado com o GCC e executado novamente.
[editar] Referências
- Richard M. Stallman, Roland Pesch, Stan Shebs, et al., Debugging with GDB (Free Software Foundation, 2002) ISBN 1882114884
- Norman Matloff, P. J. Salzman, The Art of Debugging with GDB/DDD: For Professionals and Students (No Starch Press, 2003) ISBN 159327002X