Debugger
Il debugger è un programma/software specificatamente progettato per l'analisi e l'eliminazione dei bug (ovvero errori di programmazione interni al programma) presenti in altri programmi. Assieme al compilatore è fra i più importanti strumenti di sviluppo a disposizione di un programmatore.
Poichè la compilazione con debug inserisce nel programma grandi quantità di istruzioni in più, un programma eseguito in modalità debugger è tipicamente molto più lento di quando è eseguito direttamente sul processore per cui è stato sviluppato.
Il compito principale del debugger è quello di mostrare il frammento di codice macchina che genera il problema (tipicamente un crash). Il codice può essere mostrato nella sua forma nativa, tradotto in linguaggio assembly o perfino sotto forma di codice sorgente nel linguaggio in cui il programma analizzato è stato scritto. Per mostrare il codice assembly il debugger fa tipicamente uso di un disassembler, eventualmente integrato nel debugger stesso. Per l'analisi del codice sorgente, invece, è in generale necessario uno speciale tipo di compilazione per il programma utente.
Se si utilizza un interprete il debugging è molto più naturale per la natura stessa dell'interpretazione.
Quasi tutti i debugger consentono l'esecuzione del programma analizzato a piccoli passi, mostrando nelle interruzioni il codice relativo all'istruzione sorgente corrente e lo stato attuale della CPU. L'interruzione dell'esecuzione può avvenire ad ogni singola istruzione oppure in punti esplicitamente assegnati dall'utente (breakpoint o watchpoint).
Molti debugger contengono funzioni più sofisticate come la possibilità di modificare il valore di alcune locazioni di memoria o la possibilità di modificare il flusso del programma eseguendo delle parti di codice macchina che normalmente non vengono raggiunte.
Alcuni debugger sono delle vere e proprie macchine virtuali che simulano una particolare famiglia di CPU mentre altri sfruttano particolari funzioni della CPU hardware per poter analizzare e controllare il flusso del programma.
Elenco di debugger molto utilizzati
- Absolute Debugger (adb)
- Allinea Distributed Debugging Tool (DDT) (DDT)
- AntiC
- Broadway
- CodeView ed il Visual Studio Debugger
- DAEDALUS
- dbx
- dgb PHP Debugger and Profiler client e server
- dgb Library main
- Dynamic debugging technique (DDT), e la sua controparte ottale ODT
- Visual DuxDebugger — Debugger Disassembler for Windows 64-bit
- dprobes
- doctorJ controlla la documentazione JavaDoc confrontandola con il codice
- Etnus TotalView
- GNU Debugger (GDB)
- Interactive Disassembler (IDA Pro)
- Java Platform Debugger Architecture
- ladebug
- MacsBug
- OllyDbg
- Prism Parallel Debugger
- Purify
- Symbolic Debugger (sdb)
- SoftICE
- Turbo Debugger
- TMON
- T-Bug, il debugger integrato in Perl 5
- Windbg
- Tp-cobol-debugger un debugger opensource per opencobol in linguaggio cobol /