Oltre a ciò che è stato menzionato nelle risposte precedenti, ovvero la funzione drop to frame di Eclipse nella vista debug , che riavvia il debug in precedenza nel frame dello stack (ma non ripristina i dati globali / statici) e il debugger onnisciente , che è un po 'grezzo e non tanto in evoluzione - ci sono alcuni strumenti basati su Eclipse che potrebbero essere utilizzati per "tornare indietro" nel tempo (di esecuzione):
JIVE estende il debugger di Eclipse Java con la possibilità di registrare gli stati del programma. La prospettiva JIVE fornisce alcuni utili diagrammi UML che vengono aggiornati mentre il programma è in esecuzione. Questi diagrammi forniscono una panoramica dello stato dell'applicazione (diagramma degli oggetti) e della traccia dello stack (diagramma di sequenza). È possibile eseguire una query sulla traccia memorizzata e fare un passo avanti e indietro nel tempo e vedere i diagrammi corrispondenti.
Diver registra solo le chiamate di metodo e in realtà non registra stati del programma come JIVE. Ogni evento di chiamata del metodo viene archiviato per il successivo recupero e analisi. Estende le configurazioni Java Run e Debug principalmente per specificare i filtri. La traccia può essere messa in pausa / ripresa / filtrata in fase di esecuzione. Una volta registrata, la prospettiva Diver può visualizzarla in un diagramma di sequenza interattivo.
JIVE e Diver sono progetti open source emessi da ricerche accademiche. A partire da novembre 2012 entrambi i progetti sono attivi.
Chronon è un prodotto commerciale, ma hanno licenze gratuite per studenti e progetti open source. Da quanto viene rivendicato sul loro sito Web è probabilmente il registratore più completo poiché è in grado di riprodurre la cronologia registrata, fare un passo avanti e indietro, permettendo come si dice il debug dei viaggi nel tempo. Inoltre, Eclipse non è necessario per la registrazione.
Tutti questi plugin sono abbastanza avidi di risorse, quindi è meglio avere una buona macchina specifica e usare la loro funzione di filtro. Un requisito preciso per eseguirli correttamente è estendere lo spazio heap in eclipse.ini .
Nel mio caso ho provato a usare JIVE e Diver per eseguire il debug di un programma di analisi XML, ma alla fine ho sempre congelato l'eclissi a causa della mancanza di risorse. Diver potrebbe essere complicato da eseguire su Linux 64 bit , funziona su Ubuntu 32 bit e possibilmente altre distribuzioni a 32 bit usando questi suggerimenti . L'operatore subacqueo funziona su Windows, meglio ancora su una JVM a 64 bit + 64 bit di Windows, altrimenti sarai limitato a uno spazio di heap massimo di 1,3-1,6 GB su finestre a 32 bit . JIVE funziona alla grande sul mio Linux a 64 bit e sembra funzionare bene su altre piattaforme.