Au-delà de ce qui a été mentionné dans les réponses précédentes - c'est-à-dire la fonctionnalité drop to frame d'Eclipse dans la vue de débogage , qui redémarre le débogage plus tôt dans le frame de pile (mais ne rétablit pas les données globales / statiques) et le débogueur Omniscient , qui est un peu brut et pas tellement évolutif - il existe quelques outils basés sur Eclipse qui pourraient être utilisés pour «revenir en arrière» dans le temps (d'exécution):
JIVE étend le débogueur Java Eclipse avec la possibilité d'enregistrer les états du programme. La perspective JIVE fournit des diagrammes UML utiles qui sont mis à jour pendant l'exécution du programme. Ces diagrammes donnent une vue d'ensemble de l'état de l'application (diagramme d'objets) et de la trace de pile (diagramme de séquence). Vous pouvez interroger la trace mémorisée et avancer et reculer dans le temps et voir les diagrammes correspondants.
Diver enregistre uniquement les appels de méthode et n'enregistre pas vraiment les états de programme comme JIVE. Chaque événement d'appel de méthode est stocké pour une récupération et une analyse ultérieures. Il étend les configurations Java Run et Debug principalement pour spécifier des filtres. La trace peut être interrompue / reprise / filtrée lors de l'exécution. Une fois enregistrée, la perspective Diver peut l'afficher dans un diagramme de séquence interactif.
JIVE et Diver sont des projets open source issus de la recherche académique. Depuis novembre 2012, les deux projets sont actifs.
Chronon est un produit commercial, mais ils ont des licences gratuites pour les étudiants et des projets open source. D'après ce qui est déclaré sur leur site Web, c'est probablement l'enregistreur le plus complet car il est capable de rejouer l'historique enregistré, de faire des allers-retours, permettant comme on dit le débogage dans le temps. Eclipse n'est pas non plus nécessaire pour l'enregistrement.
Tous ces plugins sont assez gourmands en ressources, il est donc préférable d'avoir une bonne machine de spécifications et d'utiliser leur fonction de filtre. Une exigence définitive pour les exécuter avec succès est d' étendre l'espace du tas dans eclipse.ini .
Dans mon cas, j'ai essayé d'utiliser JIVE et Diver pour déboguer un programme d'analyse XML, mais j'ai toujours fini par geler l'éclipse en raison du manque de ressources. Diver peut être difficile à exécuter sur Linux 64 bits , il fonctionne sur ubuntu 32 bits et éventuellement d'autres distributions 32 bits en utilisant ces conseils . Diver fonctionne sur Windows, mieux encore sur une JVM Windows 64 bits + 64 bits sinon vous serez limité à un espace de tas maximum de 1,3-1,6 Go sur Windows 32 bits . JIVE fonctionne très bien sur mon Linux 64 bits et semble fonctionner correctement sur d'autres plates-formes.