Strumenti di debug
copia linkIntroduzione
Il debug delle applicazioni consiste nel poter comprendere il comportamento dell'applicazione in fase di sviluppo allo scopo di poterne correggere eventuali difformità di comportamento rispetto al risultato atteso. A tal fine è spesso consigliato l'utilizzo di strumenti che facilitino tale comprensione secondo due principali dimensioni: l'analisi della dinamica del sistema e l'analisi dello stato puntuale dello stesso. Instant Developer contiene due diversi sistemi di debug: il primo, denominato debug post-esecuzione, rende semplice comprendere la dinamica del sistema; il secondo, il debug step by step, è adatto all'analisi dello stato dell'applicazione e della sua evoluzione in momenti precisi nel tempo.
Debug post-esecuzione
Questo è il sistema di debug presente in Instant Developer sin dalla versione 4.0. Quando questa modalità di debug è attiva, il codice generato da Instant Developer viene opportunamente instrumentato in modo da registrare l'esecuzione di ogni singolo statement o blocco di controllo, memorizzando i valori notevoli delle variabili in gioco ad ogni istruzione per giustificarne il comportamento. Tutte queste informazioni vengono raccolte nella memoria dell'applicazione e visualizzate tramite una speciale finestra browser che permette di analizzarle.

Esempio di videata per l'analisi delle informazioni raccolte dal debug post-esecuzione
I principali vantaggi di questa modalità di debug sono i seguenti:
- Le informazioni raccolte dal sistema di debug rendono immediato comprendere il flusso di esecuzione dell'applicazione. Ad ogni passo vengono memorizzati i valori delle variabili notevoli ed è quindi semplice apprezzarne la dinamica.
- Il sistema è in grado di raccogliere anche le informazioni che vengono dal framework su cui si basano le applicazioni realizzate con Instant Developer. Siccome il lavoro svolto dal framework è notevole, è importante conoscerne lo stato tramite i messaggi che esso invia al sistema di debug. In particolare il sistema di debug traccia tutte le query che vengono effettuate sul database ed i relativi risultati.
- Questo sistema di debug, nella sua forma denominata tracing, è adatto anche ad effettuare il debug di applicazioni già in produzione, mentre l'utente finale le sta utilizzando.
- Vengono anche automaticamente raccolte informazioni relative ai tempi di esecuzione (profiling) ed il sistema può rilevare e segnalare situazioni anomale, come ad esempio cicli infiniti o ricorsioni infinite.
- E' infine molto semplice da utilizzare perché si tratta di analizzare le informazioni raccolte tramite un browser direttamente integrato con IN.DE che consente perciò di navigare direttamente nelle parti di progetto interessate al debug.
Svantaggi del debug post-esecuzione:
- Quando l'algoritmo da correggere è molto complicato le informazioni raccolte possono essere molte e quindi difficili da gestire: il sistema di debug può risultare lento nella manipolazione delle stesse.
- Quando l'algoritmo da analizzare utilizza uno stato molto complesso è difficile avere un quadro complessivo dello stesso in quanto le informazioni raccolte possono risultare spezzettate in diverse parti dell'esecuzione.
- Il debug post-esecuzione non è di semplice utilizzo in caso di applicazioni di tipo servizio batch, e non è disponibile per applicazioni di tipo web-service.
- Infine non consente la modifica del valore delle variabili o del codice applicativo al momento dell'esecuzione, come invece è possibile nel caso di debug step by step. Questo può costringere a diversi cicli di compilazione e riavvio dell'applicazione durante la correzione degli errori.
Debug step by step
Iniziando una sessione di debug step-by-step, l'application server viene attivato in modalità di debug. Instant Developer, tramite un'opportuno proxy, si collega direttamente alla virtual machine Java o .NET e comunica con essa mentre l'applicazione è in fase di esecuzione. E' quindi possibile impostare breakpoint, eseguire step-by-step, interrogare lo stato dell'applicazione anche ispezionando il contenuto di oggetti complessi.

Esempio di utilizzo del sistema di debug step-by-step
Questo strumento di debug completa il precedente, infatti i vantaggi e gli svantaggi sono duali. Ecco i principali vantaggi:
- Consente l'interruzione dell'esecuzione nel punto voluto, anche all'interno di un algoritmo molto complesso.
- Consente l'analisi dello stato complessivo dell'applicazione. Permette di ispezionare lo stato di oggetti complessi direttamente dall'interno di Instant Developer.
- E' possibile effettuare il debug di ogni tipo di applicazione, anche di servizi batch e di web services.
- E' anche possibile modificare i valori delle variabili e il codice applicativo, sebbene con alcune limitazioni.
E gli svantaggi notevoli:
- La dinamica dell'esecuzione dell'applicazione non è rappresentata: ogni volta che si interrompe il funzionamento dell'applicazione si perdono le informazioni sullo stato precedente.
- E' possibile effettuare il debug solo durante lo sviluppo e non in ambiente di produzione.
- Lo strumento di debug è più complesso da utilizzare rispetto al precedente.
- Non si ha evidenza del funzionamente interno del framework.
Confronto fra i sistemi di debug
E' possibile fare un analogia per comparare queste due modalità di debug. Nella caso di debug post-esecuzione è come se venisse "filmata" l'esecuzione dell'applicazione, mentre con il debug step-by-step è come se venissero scattate una serie di fotografie. Le fotografie sono molto più definite dei singoli fotogrammi del video e quindi consentono un'analisi più raffinata dello stato puntuale dell'applicazione, tuttavia non contengono informazioni a riguardo della dinamica del sistema, molto meglio rappresentata tramite il debug post-esecuzione.
Quest'ultimo è in generale più semplice e immediato da utilizzare e solitamente contiene le informazioni necessarie alla correzione dell'applicazione: in questo senso rappresenta lo strumento di prima scelta. Tuttavia, in caso di di algoritmi particolarmente complicati o complessi, il debug step-by-step può essere lo strumento ideale per completare la comprensione del comportamento degli stessi.
In conclusione Instant Developer comprende un set completo di strumenti di debug che, completandosi a vicenda, permettono un'analisi veloce e una rapida correzione dei comportamenti anomali delle applicazioni in fase di sviluppo.
Ultima modifica: 23/03/2021 / Validità: da 7.5.3400