Más allá de lo que se mencionó en las respuestas anteriores, es decir, la función de caída a cuadro de Eclipse en la vista de depuración , que reinicia la depuración antes en el marco de la pila (pero no revierte los datos globales / estáticos) y el depurador omnisciente , que es un poco en bruto y no tanto evolucionando: hay algunas herramientas basadas en Eclipse que podrían usarse para "retroceder" en el tiempo (de ejecución):
JIVE extiende el depurador Eclipse Java con la capacidad de registrar los estados del programa. La perspectiva JIVE proporciona algunos diagramas UML útiles que se actualizan mientras se ejecuta el programa. Estos diagramas proporcionan una visión general del estado de la aplicación (diagrama de objetos) y del seguimiento de la pila (diagrama de secuencia). Puede consultar la traza memorizada y retroceder y avanzar en el tiempo y ver los diagramas correspondientes.
Diver solo graba llamadas a métodos y realmente no graba estados de programa como JIVE. Cada evento de llamada al método se almacena para su posterior recuperación y análisis. Extiende las configuraciones Java Run y Debug principalmente para especificar filtros. El seguimiento se puede pausar / reanudar / filtrar en tiempo de ejecución. Una vez grabada, la perspectiva Diver puede mostrarla en un diagrama de secuencia interactivo.
JIVE y Diver son proyectos de código abierto emitidos por investigaciones académicas. A noviembre de 2012, ambos proyectos están activos.
Chronon es un producto comercial, pero tienen licencias gratuitas para estudiantes y proyectos de código abierto. Por lo que se afirma en su sitio web, es probablemente la grabadora más completa, ya que puede reproducir el historial grabado, avanzar y retroceder, lo que permite, como dicen, la depuración de viajes en el tiempo. Tampoco se necesita Eclipse para grabar.
Todos estos complementos son bastante codiciosos en recursos, por lo que es mejor tener una buena máquina de especificaciones y usar su función de filtro. Un requisito definitivo para ejecutarlos con éxito es extender el espacio de almacenamiento dinámico en eclipse.ini .
En mi caso, intenté usar JIVE y Diver para depurar un programa de análisis XML pero siempre terminé congelando el eclipse debido a la falta de recursos. Diver podría ser difícil de ejecutar en Linux 64 bits , funciona en ubuntu 32 bits y posiblemente en otras distribuciones de 32 bits con estos consejos . Diver funciona en Windows, mejor aún en una JVM de Windows de 64 bits + 64 bits; de lo contrario, estará limitado a un espacio de almacenamiento dinámico máximo de 1.3-1.6 Gb en ventanas de 32 bits . JIVE funciona muy bien en mi Linux de 64 bits, y parece funcionar bien en otras plataformas.