GNU Debugger
GNU Debugger(GDB olarak kısaltılır) GNU yazılım sistemi için kullanılan bir hata ayıklayıcıdır (debugger). Unix tabanlı pek çok sisteminde, C, C++ ve Fortran gibi birçok programlama dilinde çalışan taşınabilir bir hata ayıklayıcıdır.
Tarihçe
Richard Stallman tarafından 1988 yılında yazılan GDB, GNU General Public License kapsamında dağıtılan ücretsiz bir yazılımdır. 1990 - 1993 yılları arasında Cygnus Solutions' da çalıştığı sırada geliştirilmesine John Gilmore tarafından devam edilmiştir.
Teknik Detaylar
Özellikler
GDB bilgisayar programlarının çalıştırılmasını değiştiren ve takip eden pek çok gelişmiş özelliğe sahiptir. Kullanıcı programın iç değişkenlerini ve normal akışı içerisinde çağrılan fonksiyonları izleyebilir ve degiştirebilir.
2003 yılı itbari ile GDB' nin desteklediği işlemciler şunlardır; Alpha, ARM, H8/300, System/370, System 390, X86 ve X86-64, IA-64 "Itanium", Motorola 68000, MIPS,PA-RISC, PowerPC, SuperH, SPARC, VAX.
Standart sürüme eklenmiş daha az bilinen işlemciler; A29K, ARC, AVR, CRIS, D10V, D30V, FR-30, FR-V, Intel i960, M32R, 68HC11, Motorola 88000, MCORE, MN10200, MN10300, NS32K, Stormy16, V850, VAX, ve Z8000. (yeni sürümler muhtemelen bu işlemcileri desteklemeyecektir.)
GDB hedef platformlar için simulatörler üzerinde derlenmiştir.
Uzaktan Hata Ayıklama
Gömülü sistemlerde hata ayıklama işlemi sırasında sıklıkla GDB'nin "uzaktan" modu kullanılır. GDB bir makina üzerinde çalışıyor ve ayıklanan program başka bir makina üzerinde çalışıyorsa uzaktan işlem etkinliği kullanılır. Seri port ya da TCP/IP üzerinden, GDB protokolünü anlayan uzaktaki makinayla bağlantı kurulabilir. Aynı mod kaynak seviyesinde çalışan bir linux kernel gdb kullanarak KGDB tarafından ayıklanması sırasındada kullanılır. Kernel geliştiricileri kgdb' yi kullanarak uygulama programları gibi kernel üzerindede hata ayıklama işlemleri yapabilirler. Kernel code içerisinde istenilen yerlere kesme noktaları konularak kod boyunca belli adımlarla ilerlenip değişkenler gözlemlenebilir. Bazı mimarilerde donanım hata ayıklama yazmaçları (register) mevcut olup, çeşitli izleme noktaları belirlenerek belirli bir bellek adresine ulaşıldığı ya da çalıştırıldığı zaman kesme noktaları tetiklenebilmektedir. kgdb hata ayıklanması yapılacak makinaya seri kablo ya da ethernet kartı üzerinden bağlı ikinci bir makina gerektirir. FreeBSD üzerinde Firewire DMA kullanarak hata ayıklama işlemini gerçekleştirmek mümkündür.
Sınırlamalar
GDB kendi içerisinde bir grafiksel kullanıcı arayüzüne sahip değildir, standart olarak komut satırı arayüzüne sahiptir. DDD, GDBtk/Insight ve Emacs' in GUD mode uygulaması GDB için grafik arayüzleri sağlamaktadır. Bu araçlar tümleşik geliştirme ortamlarındaki hata ayıklayıcılara benzer özelliklere sahiptir.
memory leak dedektörü gibi çeşitli araçlarda GDB ile beraber çalışabilmektedir.
Örnek Komutlar
gdb prog.out
prog.out ayıklar
gdb > run
çalıştırır