Über das hinaus, was in früheren Antworten erwähnt wurde - dh die Drop-to-Frame-Funktion von Eclipse in der Debug-Ansicht , die das Debuggen früher im Stack-Frame neu startet (aber keine globalen / statischen Daten zurücksetzt ), und der Omniscient-Debugger , der etwas roh und nicht so sehr ist Weiterentwicklung - Es gibt einige Eclipse-basierte Tools, mit denen Sie in der (Laufzeit-) Zeit "zurückkehren" können:
JIVE erweitert den Eclipse Java-Debugger um die Möglichkeit, die Programmzustände aufzuzeichnen. Die JIVE-Perspektive bietet einige nützliche UML-Diagramme, die während der Ausführung des Programms aktualisiert werden. Diese Diagramme geben einen Überblick über den Status der Anwendung (Objektdiagramm) und der Stapelverfolgung (Sequenzdiagramm). Sie können die gespeicherte Ablaufverfolgung abfragen und rechtzeitig vor- und zurückgehen und die entsprechenden Diagramme anzeigen.
Diver zeichnet nur Methodenaufrufe auf und zeichnet Programmzustände wie JIVE nicht wirklich auf. Jedes Methodenaufrufereignis wird zum späteren Abrufen und Analysieren gespeichert. Es erweitert die Java Run- und Debug-Konfigurationen hauptsächlich, um Filter anzugeben. Der Trace kann zur Laufzeit angehalten / fortgesetzt / gefiltert werden. Einmal aufgenommen, kann die Taucherperspektive es in einem interaktiven Sequenzdiagramm anzeigen.
JIVE und Diver sind Open-Source-Projekte aus der akademischen Forschung. Ab November 2012 sind beide Projekte aktiv.
Chronon ist ein kommerzielles Produkt, aber sie haben kostenlose Lizenzen für Studenten und Open Source-Projekte. Nach dem, was auf ihrer Website behauptet wird, ist es wahrscheinlich der umfassendste Rekorder, da er in der Lage ist, den aufgezeichneten Verlauf wiederzugeben, hin und her zu gehen und so das Debuggen auf Zeitreise zu ermöglichen. Auch Eclipse wird für die Aufnahme nicht benötigt.
Alle diese Plugins sind ziemlich ressourcenschonend, daher ist es am besten, eine gute Spezifikationsmaschine zu haben und ihre Filterfunktion zu verwenden. Eine eindeutige Voraussetzung für eine erfolgreiche Ausführung ist die Erweiterung des Heap-Speicherplatzes in eclipse.ini .
In meinem Fall habe ich versucht, mit JIVE und Diver ein XML-Parsing-Programm zu debuggen, aber aufgrund fehlender Ressourcen die Eclipse immer eingefroren. Es könnte schwierig sein, Diver unter Linux 64- Bit zu betreiben. Mit diesen Tipps funktioniert es unter Ubuntu 32-Bit und möglicherweise anderen 32-Bit-Distributionen . Diver funktioniert unter Windows, besser noch unter Windows 64-Bit + 64-Bit-JVM. Andernfalls sind Sie auf einen maximalen Heap-Speicherplatz von 1,3 bis 1,6 GB unter 32-Bit-Fenstern beschränkt . JIVE funktioniert hervorragend unter meinem 64-Bit-Linux und scheint auf anderen Plattformen einwandfrei zu funktionieren.