Помимо того, что было упомянуто в более ранних ответах, например, функция перехода Eclipse в кадр в представлении отладки , которая перезапускает отладку раньше в кадре стека (но не возвращает глобальные / статические данные) и отладчик Omniscient , который немного сырой и не так много развивающиеся - есть несколько инструментов на основе Eclipse, которые можно использовать для «возврата» во время (выполнения):
JIVE расширяет отладчик Eclipse Java возможностью записи состояний программы. Перспектива JIVE предоставляет некоторые полезные диаграммы UML, которые обновляются во время работы программы. Эти диаграммы предоставляют обзор состояния приложения (диаграмма объектов) и трассировки стека (диаграмма последовательности). Вы можете запросить запомненную трассу и сделать шаг назад и вперед во времени и увидеть соответствующие диаграммы.
Diver записывает только вызовы методов и на самом деле не записывает состояния программы, такие как JIVE. Каждое событие вызова метода сохраняется для последующего извлечения и анализа. Он расширяет конфигурации Java Run и Debug в основном для определения фильтров. Трассировку можно приостановить / возобновить / отфильтровать во время выполнения. После записи перспектива Diver может отображаться на интерактивной диаграмме последовательности.
JIVE и Diver - это проекты с открытым исходным кодом, созданные в результате академических исследований. По состоянию на ноябрь 2012 года оба проекта активны.
Chronon - коммерческий продукт, но у них есть бесплатные лицензии для студентов и проектов с открытым исходным кодом. Судя по тому, что заявлено на их веб-сайте, это, вероятно, самый полный регистратор, поскольку он может воспроизводить записанную историю, шагать вперед и назад, позволяя, как говорится, отладку во времени. Также Eclipse не нужен для записи.
Все эти плагины довольно жадны в ресурсах, поэтому лучше иметь машину с хорошими спецификациями и использовать их функцию фильтрации. Определенным требованием для их успешного запуска является расширение кучи в eclipse.ini .
В моем случае я пытался использовать JIVE и Diver для отладки программы синтаксического анализа XML, но всегда останавливал eclipse из-за нехватки ресурсов. Diver может быть сложно запустить на 64-битной Linux , он работает на 32-битной Ubuntu и, возможно, в других 32- битных дистрибутивах, используя эти советы . Diver работает в Windows, а еще лучше - на 64-битной + 64-битной JVM Windows, в противном случае вы будете ограничены максимальным пространством кучи 1,3–1,6 ГБ в 32-битных окнах . JIVE отлично работает на моем 64-битном Linux и, кажется, отлично работает на других платформах.