Çok Kullanılan Intel x86 Debuggerlar


Bir programı çalışırken incelemek için kullanılan yazılımlara debugger denilmektedir. Debugger'lar genellikle hata bulma amacıyla kullanılırlar. (Etimolojik olarak debug "hata ayıklama" anlamına gelmektedir. "Bug" sözcüğünden türetilmiştir.) Debugger'lar dinamik analiz araçlarındandır. Bir programı çalıştırmadan analiz eden araçlara "statik analiz araçları", çalıştırarak analiz eden araçlara "dinamik analiz araçları" denilmektedir. Debugger'lar çeşitli bakımlardan sınıflandırılabilmektedir. Örneğin; 
  • Bazı debugger'lar yüksek seviyeli dillerdeki kodları o dillere göre debug (bunlara "source level debugger" da denilmektedir) etmektedirler.
  • Bazıları makine kodu düzeyinde debug (bunlara "machine level debugger" da denilebilmektedir) etmektedirler.
  • Bazı debugger'lar yalnızca "user mode" programları debug ederken bazıları "kernel mode" programları da debug edebilmektedir (bunlara “kernel mode debugger”lar da denilmektedir).
  • Bazıları uzaktaki makinelerdeki programları debug (bunlara "remote debugger" da denilmektedir) edebilirler. 
  • Bazıları yalnızca o makinedeki programları debug ( bunlara "local debugger" lar da denilebilmektedir.) edebilmektedir 
Bazı debugger'lar debug faaliyeti sırasında kod üzerinde değişiklik yapılabilmektedir. Bazı debugger'lar komut satırından yönetilirler, bazıları GUI arayüzüne sahiptir. Intel x86 işlemcileri için en yaygın kullanılan debugger'lar şunlardır:

Microsost Visual Studio Debugger

Visual Studio IDE'sinin içerisinde hem kaynak kod düzeyinde hem de makine kodu düzeyinde debug işlemi yapan bir debugger vardır. Visual Studio Debugger'ı "user level" bir debugger'dır.

GNU Debugger (GDB)

GNU projesi kapsamında gcc ile birlikte geliştirilmiş en önemli debugger'lardan biridir. GDB UNIX/Linux sistemlerindeki temel debugger'dır. Windows ve MAC OS X sistemleri için de port edilmiştir. Aslında pek çok GUI araç arka planda GDB kullanmaktadır. (Bunlara GDB'nin frontend'leri de denilmektedir.) Örneğin Netbeans, Eclipse, Qt-Creator, SASM arka planda gdb debugger'ını kullanmaktadır. GDB'de "user level" bir debugger'dır. Hem kaynak kod düzeyinde hem de makine kodu düzeyinde debug yapabilmektedir.

IDAPRO Debugger

IDAPRO profesyonel hem "user level" hem de "kernel level" debugger'dır. Pek çok hacking işleminde birincil debugger olarak tercih edilmektedir. Kaynak düzeyinde ve makine kodu düzeyinde debug yapabilmektedir. IDAPRO arka planda çeşitli debugger'lardan da faydalanmaktadır. IDAPRO eski SoftIce Debugger'ının geliştirilmiş biçimidir. Çok fazla özelliğe sahiptir. Bu nedenle kullanımı biraz zordur.



Microsoft WinDbg

Windows'un "kernel level debugger" ıdır. DDK (ya da yeni ismi ile WDK) paketi içerisinde onun bir parçası olarak gelmektedir. WinDbg ile programların kernel moddaki çalışması hakkında analizler yapılabilmektedir.

KDB ve KGDB

Bu debugger’lar temelde Linux için düşünülmüş "kernel level debugger" lardır. KDB lokal (local) bir kernel debugger iken KGDB uzak (remote) makine için debugger'dır.