Debugger: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
m correzione categoria
Riga 23: Riga 23:
* [[dgb Library]] [http://dbg.sourceforge.net/ main]
* [[dgb Library]] [http://dbg.sourceforge.net/ main]
* [[Dynamic debugging technique]] (DDT), e la sua controparte ottale ODT
* [[Dynamic debugging technique]] (DDT), e la sua controparte ottale ODT
*[http://www.duxcore.com/products.html Visual DuxDebugger] — Debugger Disassembler for Windows 64-bit
* [http://www-124.ibm.com/linux/projects/dprobes/ dprobes]
* [http://www-124.ibm.com/linux/projects/dprobes/ dprobes]
* [http://doctorj.sourceforge.net doctorJ] controlla la documentazione JavaDoc confrontandola con il codice
* [http://doctorj.sourceforge.net doctorJ] controlla la documentazione JavaDoc confrontandola con il codice

Versione delle 21:14, 25 dic 2010

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.

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.

Quasi tutti i debugger consentono l'esecuzione del programma analizzato a piccoli passi, mostrando nelle interruzioni il codice relativo all'istruzione 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).

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

Voci correlate