Screenshot di OllyDbg

Un debugger in informatica è un programma/software specificatamente progettato per l'analisi e l'eliminazione dei bug (debugging), ovvero errori di programmazione interni al codice di altri programmi.[1]

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 errori di semantica all'interno del codice sorgente del programma, altrimenti di difficile individuazione in fase di runtime.

La maggior parte dei debugger include un disassembler, come il programma objdump delle GNU Binutils.

Descrizione

modifica

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 di programmazione in cui il programma analizzato è stato scritto. Per mostrare il codice assembly, il debugger fa tipicamente uso di un disassembler, eventualmente integrato nello 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à debug è tipicamente molto più lento di quando è eseguito direttamente sul processore per cui è stato sviluppato.

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 ovvero lo stato o valore delle variabili associate alle rispettive nelle celle di memoria. L'interruzione dell'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 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 più utilizzati

modifica

Note

modifica
  1. ^ Mikejo5000, Che cos'è il debug? - Visual Studio, su docs.microsoft.com. URL consultato il 10 settembre 2020.

Voci correlate

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

📚 Artikel Terkait di Wikipedia

SharpDevelop

NET della Microsoft. Un designer di Windows Forms per C#, VB.NET e Boo Debugger integrato Code completion per C#, VB.NET e Boo (incluso supporto per Ctrl+Space)

Xcode

Sense indexing. Xcode 1.5 migliora ulteriormente il code completion e il debugger. Xcode 2 è stato distribuito con Mac OSX v10.4 Tiger. Include il Quartz

Interactive Disassembler

DOS/Windows GNU C++ for Cygwin MS C (16 bit) for DOS/Windows MS Visual Studio .NET MS Visual C++ v6 Watcom C++ (16/32 bit) for DOS/OS2 ARM C v1.2 GNU C++ for

KDevelop

java. Navigazione delle classi. Front-end per il GNU Compiler Collection. Front-end per il GNU Debugger. Wizard per generare e aggiornare definizioni di

Embarcadero Delphi

sintattico evoluto, uno strumento per la realizzazione visuale delle interfacce grafiche, un debugger integrato e il supporto per plugin di terze parti. Alcune

Anjuta

gestione dei progetti, i template per la creazione di applicazioni e un debugger interattivo costruito sopra GDB, oltre che un potente editor di codice

OCaml

prevede un potente preprocessore (che permette estensioni sintattiche), un debugger (che permette l'analisi a ritroso degli errori), un generatore di documentazione

Free Pascal

it. Tool di sviluppo FPS un completo IDE Win32 per FPC, comprensivo di debugger (trace, breakpoint e finestre di watch) DevPascal IDE Win32 per FPC. FPCShell