Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

L'esecuzione passo-passo

Controllare l'esecuzione di ciascuna istruzione dell'applicazione
Controllare l'esecuzione di ciascuna istruzione dell'applicazione
Link copiato negli appunti

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.

Figura 39. Barra degli strumenti del debugger
Barra degli strumenti del debugger
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.


Ti consigliamo anche