Debugger: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Amirobot (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
IlIn [[informatica]] il '''debugger''' è un [[Programma (informatica)|programma/software]] specificatamente progettato per l'analisi e l'eliminazione dei [[bug (informatica)|bug]], (ovvero errori di [[programmazione (informatica)|programmazione]] interni al programma)[[codice presentisorgente]] indi altri programmi. Assieme al [[compilatore]] è fra i più importanti strumenti di sviluppo a disposizione di un [[programmatore]], spesso compreso all'interno di un [[ambiente integrato di sviluppo]].
 
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.
 
==Descrizione==
Il compito principale del debugger è quello di mostrare il frammento di [[codice macchina]] che genera il problema (tipicamente un [[crash (informatica)|crash]]).
Il codice può essere mostrato nella sua forma nativa, tradotto in linguaggio [[assembly]] o perfino sotto forma di [[codice sorgente]] nel [[linguaggio di programmazione]] 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.
 
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.
 
Se si utilizza un [[Interprete (informatica)|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 (informatica)|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.