Debugger: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
m + tpl
Riga 50: Riga 50:
*[[Bug (informatica)|Bug]]
*[[Bug (informatica)|Bug]]
*[[Debugging]]
*[[Debugging]]

{{Collaudo del software}}


[[Categoria:Debugger]]
[[Categoria:Debugger]]

Versione delle 14:01, 20 giu 2011

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

Voci correlate