Stavo usando il debugger Java all'interno di Intellij 8 e ho notato un pulsante con l'etichetta "drop frame", qualcuno sa a cosa serve? Come / perché dovrebbe essere usato / utile?
Stavo usando il debugger Java all'interno di Intellij 8 e ho notato un pulsante con l'etichetta "drop frame", qualcuno sa a cosa serve? Come / perché dovrebbe essere usato / utile?
Risposte:
Lo stack di chiamate dell'applicazione può essere visualizzato nel debugger. Usando la funzionalità "Drop Frame" puoi "ripiegare" a uno stack frame precedente, in un certo senso andando indietro nel tempo. Questo può essere utile per reinserire una funzione se hai perso un punto critico che vorresti vedere di nuovo.
Come suggerisce il nome "Stack Frame", le modifiche che erano già state apportate allo stato globale (come le variabili statiche, le modifiche ai valori dei campi e simili) non verranno annullate, vengono ripristinate solo le variabili locali. Ciò può portare a un percorso di esecuzione diverso da quello che originariamente ha portato al punto di interruzione. È 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. In combinazione con la modifica dei valori delle variabili disponibile anche tramite il debugger, puoi fare ogni sorta di cose interessanti.
Si noti che, ovviamente, qualsiasi effetto collaterale che potrebbe essersi verificato, ad esempio traffico di rete, manipolazioni di file, output della console, ecc., Non può essere riavvolto.
Drop Frame all'interno del debugger apre lo stack frame corrente e restituisce il controllo al metodo chiamante, ripristinando tutte le variabili locali. Ciò è molto utile per scorrere ripetutamente una funzione, ma attenzione: le mutazioni di campo o i cambiamenti di stato globale rimarranno.
Vedi maggiori informazioni qui .
Eliminare i frame dallo stack utilizzando il debugger consente essenzialmente di "riavvolgere" l'esecuzione dell'applicazione per raggiungere uno stato precedente. Le variabili al di fuori dello stack frame non vengono ripristinate.
Come nota a margine, credo che questa funzione sia chiamata "Drop to Frame" in Eclipse, ma ha lo stesso scopo.