Debugger: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
fix
 
(38 versioni intermedie di 29 utenti non mostrate)
Riga 1:
{{F|programmazione|data=agosto 2017|commento=assenza totale di fonti}}
In [[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 codice di 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]].
[[File:OllyDbg capture.png|thumb|[[Screenshot]] di [[OllyDbg]]]]
 
In [[informatica]] ilUn '''debugger''' in informatica è un [[Programma (informatica)|programma/software]] specificatamente progettato per l'analisi e l'eliminazione dei [[bug]] (informatica)|bug[[debugging]]), ovvero errori di [[programmazione (informatica)|programmazione]] interni al codice di altri programmi.<ref>{{Cita Assieme al [[compilatore]]web|url=https://docs.microsoft.com/it-it/visualstudio/debugger/what-is-debugging|titolo=Che cos'è frail idebug? più- importantiVisual strumentiStudio|autore=Mikejo5000|sito=docs.microsoft.com|lingua=it-it|accesso=10 disettembre sviluppo a disposizione di un [[programmatore]], spesso compreso all'interno di un [[ambiente integrato di sviluppo]].2020}}</ref>
==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.
 
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]] (IDE), in quanto in grado di aiutare il [[programmatore]] ad individuare [[errore di semantica|errori di semantica]] all'interno del [[codice sorgente]] del programma, altrimenti di difficile individuazione in fase di [[runtime]].
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.
 
La maggior parte dei debugger include un [[disassembler]], come il programma [[objdump]] delle [[GNU Binutils]].
 
== 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 debuggernello 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à debuggerdebug è 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]] ovvero lo stato o valore delle [[variabile (informatica)|variabili]] associate alle rispettive nelle celle di [[memoria (informatica)|memoria]]. L'interruzione dell'[[esecuzione (informatica)|esecuzione]] può avvenire passo passo ad ogni singola istruzione, entrando eventualmente in altri sottoprogrammi, oppure in punti esplicitamente assegnati dall'utente ([[breakpoint]] o watchpoint). L'ultima istruzione evidenziata prima del crash è tipicamente il punto o causa dello scatenarsi dell'evento indesiderato, anche se in linea di massima questa può a sua volta dipendere da risultati di istruzioni precedenti (es. valori nulli di variabili o parametri passati).
 
Molti debugger contengono funzioni più sofisticate come la possibilità di modificare il valore di alcune locazioni di [[Memoria (informatica)|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 [[Macchina virtuale|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 moltopiù utilizzati ===
{{Divdiv col|cols=2|small=no}}
* [[Absolute Debugger]] (adb)
* [[Allinea Distributed Debugging Tool (DDT)]] (DDT)
Line 24 ⟶ 30:
* [[DAEDALUS]]
* [[dbx debugger|dbx]]
* [[dgb PHP Debugger and Profiler]] [http://dd.cron.ru/dbg/ client e server]
* [[dgb Library]] [http://dbg.sourceforge.net/ main]
* [[Dynamic debugging technique]] (DDT), e la sua controparte ottale ODT
* [http://www.duxcore.com/products.html Visual DuxDebugger] — , Debuggerdebugger Disassemblerdisassembler forper Windows 64-bit
* dprobes
* [http://www-124.ibm.com/linux/projects/dprobes/ dprobes]
* [http://doctorj.sourceforge.net doctorJ], controlla la documentazione JavaDoc confrontandola con il codice
* [[Etnus TotalView]]
* [[GNU Debugger]] (GDB)
Line 45 ⟶ 51:
* [[T-Bug]], il debugger integrato in [[Perl|Perl 5]]
* [[Windbg]]
* [[Tp-cobol-debugger]] [http://sourceforge.net/projects/tp-cobol-debugg un, debugger opensource per opencobol in linguaggio cobol /]
{{Divdiv col end}}
 
== Note ==
<references />
 
== Voci correlate ==
* [[Bug (informatica)|Bug]]
* [[Debugging]]
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC||debugger}}
 
{{Collaudo del software}}
 
{{Portale|informatica}}
[[Categoria:Debugger]]
 
[[arCategoria:مصححDebugging]]
[[bg:Дебъгер]]
[[bs:Debugger]]
[[ca:Depurador]]
[[cs:Debugger]]
[[da:Debugger]]
[[de:Debugger]]
[[en:Debugger]]
[[eo:Erarserĉilo]]
[[es:Depurador]]
[[eu:Araztaile]]
[[fa:اشکال‌یاب (برنامه‌نویسی)]]
[[fi:Debuggeri]]
[[fr:Débogueur]]
[[hr:Program za pronalaženje pogrešaka]]
[[is:Kembiforrit]]
[[ja:デバッガ]]
[[kk:Жөндеуіш]]
[[ko:디버거]]
[[ml:ഡീബഗ്ഗിങ്ങ്]]
[[ms:Penyahpepijat]]
[[nl:Debugger]]
[[pl:Debugger]]
[[pt:Depurador]]
[[ru:Отладчик]]
[[sh:Debugger]]
[[simple:Debugger]]
[[sv:Avlusare]]
[[th:ดีบั๊ก]]
[[uk:Зневаджувач]]
[[zh:调试工具]]