Che cosa sono i Debugger Reversibili in informatica

Che cosa sono i Debugger Reversibili in informatica

I debugger tradizionali offrono una navigazione temporale limitata all’esecuzione in avanti del codice, come descritto nell’articolo dei debugger, quindi per aiutare i programmatori a risparmiare risorse e tempo, sono stati introdotti dei nuovi programmi che consentono di navigare all’interno del codice: entrano cosi in gioco i debugger reversibili.

Che cosa sono i Debugger Reversibili in informatica

I Debugger Reversibili consentono agli sviluppatori di registrare le attività del programma in esecuzione, per poi riavvolgere e riprodurre tali istruzioni, compresi eventuali errori, per ispezionare lo stato del programma.
È una sorta di viaggio nel tempo all’interno del codice in cui vengono eseguite tutte le istruzioni (come gli accessi in memoria, le chiamate al sistema operativo, le dichiarazioni di variabili) per poi, tramite opportuni comandi, replicare al contrario il programma, consentendo allo sviluppatore, di migliorare drasticamente la propria integrazione nell’esecuzione del programma, agevolandolo a navigare avanti e indietro (forward and backward) fra la cronologia delle istruzioni per trovare più facilmente l’origine dell’errore.

Ripercorrere questo flusso di informazioni in programmi concorrenti, ove il debugger lo consentisse, o in programmi molto strutturati può richiedere un consumo non indifferente di memoria.

Per migliorare le prestazioni, sta quindi allo sviluppatore, cercare di ridurre ad un sottoinsieme il più piccolo possibile il quantitativo di informazioni necessarie per identificare ed eventualmente correggere il bug del flusso esaminato, sfruttando le funzionalità del debugger stesso.

Vantaggi dei Debugger Reversibili

Il vantaggio principale di questi debugger rispetto a quelli classici è che, dato un bug, è possibile ripercorrere il flusso del codice per identificare con uno sforzo minore il bug in questione.
Per errori semplici, grazie ai compilatori classici, il bug può essere catturato semplicemente scorrendo ed esaminando il codice riga per riga sfruttando le funzionalità base dei debugger a runtime.

Tuttavia, questa strategia è molto più difficile da applicare nel caso di bug, la cui riproduzione risulti essere più complessa, in quanto uno sviluppatore può avere poche o nessuna informazione sul perché il bug sia stato generato.

I debugger reversibili sono la soluzione più utile per questo tipo di errori in quanto un programmatore può effettuare un’esecuzione del programma all’indietro, così come in avanti, al fine di raggiungere un punto di interesse, e trovare la causa principale del problema da due estremità del programma invece di una sola.

Con questi debugger risulta così possibile eseguire il programma finché non raggiunge un punto di interruzione e analizzare eventuali problemi che si verificano in quella particolare sezione di codice. Infatti, attraverso i Debugger Reversibile, è possibile accedere direttamente al thread che ha inviato la variabile tramite l’esecuzione all’indietro del codice, raggiungendo immediatamente il bug riscontrato. Come vedremo nei prossimi capitoli infatti, oltre a particolari comandi presenti in alcuni Debugger, sarà possibile visualizzare tutte le eccezioni che vengono catturate e avere l’elecondo di esecuzione dei thread aggiornati.

Precedente Che cos'è e come funziona un debugger in informatica Successivo Differenza tra classificazione, regressione e clustering

Lascia un commento