Le finestre in alto della prospettiva di debug rappresentano rispettivamente:
- la finestra di debug
- il gruppo di finestre di analisi
La finestra di debug visualizza lo stato del debug e il flusso di esecuzione. La rappresentazione del flusso di esecuzione (stack) della applicazione è di tipo gerarchico e visualizza all'interno del thread principale della applicazione, evidenziato, la classe sotto debug (nel nostro caso la classe Debugger) e la funzione all'interno della classe: button1_clickHandler.
Sempre da questa finestra, attraverso la sua toolbar o attraverso l'utilizzo dei tasti funzione, è possibile fermare l'applicazione, proseguire fino al prossimo breakpoint, escludere il debugger o proseguire l'esecuzione a passi.
Vediamo tutto questo praticamente. In modalità source aggiungiamo questa semplice funzione:
// Prodotto di due numeri
private function mul(num1:Number,num2:Number):Number
{
var ritorno:Number=num1*num2;
return ritorno;
}
Ora richiamiamo questo metodo nell'event handler del bottone:
protected function button1_clickHandler(event:MouseEvent):void
{
trace("Hello world debugger");
trace( + new Date().toString());
var risultato:Number = mul(5,3);
trace("Il risultato del prodotto di 5x3=" + risultato);
}
Mandiamo in esecuzione il progetto e clicchamo sul bottone, quando il progetto si arresta possiamo procedere passo passo grazie ai comandi che troviamo nella barra degli strumenti della finestra debug.
| Pulsante | ShortCut | Descrizione |
|---|---|---|
| step over | F6 | consente di avanzare riga per riga. Se un'istruzione chiama una funzione, il flusso del codice esegue la funzione e passa alla riga successiva senza interrompere il flusso |
| step into | F5 | uguale alla precedente, ma quando trova una funzione, passa all'esecuzione passo-passo anche delle istruzioni della funzione chiamata, diversa da quella che stiamo analizzando |
| step Return | F7 | nel caso in cui siamo all'interno di una funzione, completa l'esecuzione della funzione corrente e si ferma alla riga successiva della riga di codice che l'ha invocata |
| Resume | F8 | L'esecuzione viene ripresa fino al Breakpoint successivo |
Per fare un esempio possiamo lanciare la nostra applicazione e provare le varie modalità di esecuzione sulla chiamata alla funzione mul(). Osserviamo che con step over passiamo alla riga successiva senza entrare nel merito della funzione mul(), mentre con step into il debugger ci porta sulla prima riga di mul() e per uscirne rapidamente possiamo premere step return.
Osservando la finestra di Debug notiamo lo stack delle chiamate nel punto in siamo fermi. Sotto il ramo Main Thread, in ordine inverso, abbiamo il flusso di esecuzione: cioè siamo fermi sulla classe Debugger, nella funzione mul, che e' stata chiamata dalla funzione button1_clickHandler della classe Debugger.
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: