2010-03-02 3 views

risposta

92

Lo stack di chiamate dell'applicazione può essere visualizzato nel debugger. Usando la funzionalità "Drop Frame" puoi "ricadere" su un frame stack precedente, in un certo senso tornare indietro nel tempo. Questo può essere utile per rientrare in una funzione se hai perso un punto critico che vorresti vedere di nuovo.

Come suggerisce il nome "Frame di stack", le modifiche già apportate allo stato globale (come variabili statiche, modifiche ai valori di campo e simili) non verranno annullate, ma solo le variabili locali vengono ripristinate. Questo può portare a un percorso di esecuzione diverso rispetto a quello che originariamente ha portato al tuo punto di rottura. È necessario essere consapevoli di questo: spesso lo considero una funzionalità utile per esplorare diversi percorsi di esecuzione senza dover riavviare l'applicazione o un particolare processo lungo che ha portato allo stack corrente. Combinato con il cambiamento dei valori delle variabili disponibile anche tramite il debugger, puoi fare ogni sorta di cose interessanti.

Si prega di notare che, naturalmente, eventuali effetti collaterali che potrebbero essersi verificati - e. g. traffico di rete, manipolazioni di file, output della console ecc. - non possono essere riavvolti.

5

L'eliminazione dei frame dallo stack utilizzando il debugger consente essenzialmente di "riavvolgere" l'esecuzione dell'applicazione per raggiungere uno stato precedente. Le variabili al di fuori del frame dello stack non vengono ripristinate.

Come nota a margine, credo che questa funzione si chiami "Rilasciare su Frame" in Eclipse, ma ha lo stesso scopo.

9

frame goccia all'interno del debugger apre stack frame corrente e mette controllo indietro al metodo chiamante, ripristinando eventuali variabili locali. Questo è molto utile per fare ripetutamente il passo attraverso una funzione, ma attenzione: le mutazioni dei campi o lo stato globale rimarranno.

Vedere ulteriori informazioni here.

Problemi correlati