¿Cómo retroceder en el depurador de Eclipse?

¿Es posible realizar la ejecución inversa en el depurador Eclipse? El proyecto actual en el que estoy trabajando requiere un mínimo de 5 segundos para leer e inicializar los datos de un archivo antes de que se pueda hacer algo. Si sobre paso en el depurador, tengo que finalizar el progtwig y reiniciar, y esto lleva bastante tiempo.

Puede usar el comando drop to frame de Eclipse para volver a ingresar el método actual desde la parte superior. Pero no desenrollará ningún cambio de estado que haya sucedido, por lo que puede no funcionar según el tipo de método en el que se encuentre.

Otra herramienta realmente genial que realmente te permite avanzar y retroceder en el tiempo es el Omniscient Debugger . Funciona al instrumentar las clases a medida que se cargan en el cargador de clases, por lo que puede registrar todo lo que hace su código. Puede hacer cosas muy interesantes, como responder “cuándo, dónde y por qué se asignó este campo a su valor actual”. La interfaz de usuario es bastante torpe, y puede ser difícil manejar grandes bases de código, pero en algunos casos puede ahorrar mucho tiempo.

Actualización : Chronon proporciona un producto comercial que describe como un “DVR para Java”, que parece hacer muchas cosas similares al ODB.

Más allá de lo mencionado en respuestas anteriores, es decir, la característica de ecualización de Eclipse en la vista de depuración , que reinicia la depuración antes en el marco de la stack (pero no revierte los datos globales / estáticos) y el depurador Omnisciente , que es un poco crudo y no tanto evolución: hay algunas herramientas basadas en Eclipse que se podrían usar para “volver” en el tiempo (de ejecución):

  • JIVE : Entorno de visualización interactiva Java
  • Chronon : Un “registrador de datos de vuelo” para progtwigs Java
  • Buceador (descontinuado) : vistas dinámicas interactivas para ingeniería inversa
  • Halik : solo para IntelliJ por ahora, pero la migración a Eclipse se menciona en la hoja de ruta .

JIVE extiende el depurador de Eclipse Java con la capacidad de registrar los estados del progtwig. La perspectiva JIVE proporciona algunos diagtwigs UML útiles que se actualizan mientras el progtwig se está ejecutando. Estos diagtwigs proporcionan una visión general del estado de la aplicación (diagtwig de objetos) y de la traza de stack (diagtwig de secuencia). Puede consultar la traza memorizada y avanzar y retroceder en el tiempo y ver los diagtwigs correspondientes.

Diver solo graba llamadas de método y realmente no graba estados de progtwig como JIVE. Cada evento de llamada de método se almacena para su posterior recuperación y análisis. Extiende las configuraciones Java Run y ​​Debug principalmente para especificar filtros. El rastreo se puede pausar / reanudar / filtrar en tiempo de ejecución. Una vez registrada, la perspectiva del buceador puede mostrarla en un diagtwig de secuencia interactivo.

JIVE y Diver son proyectos de código abierto que provienen de investigaciones académicas. A partir de 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. De lo que se afirma en su sitio web es probablemente la grabadora más completa, ya que es capaz de reproducir el historial grabado, dar un paso adelante y atrás, lo que permite, como dicen, la depuración de viaje en el tiempo. Además, Eclipse no es necesario para la grabación.

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 ampliar el espacio de almacenamiento dynamic en eclipse.ini .

En mi caso, traté de usar JIVE y Diver para depurar un progtwig de análisis XML, pero siempre terminé congelando el eclipse debido a la falta de recursos. Diver podría ser complicado de ejecutar en Linux de 64 bits , funciona en Ubuntu 32bit y posiblemente en otras distribuciones de 32 bits con estos consejos . Diver funciona en Windows, mejor aún en una Windows 64bit + 64bit JVM; de lo contrario, estará limitado a un espacio de almacenamiento máximo de 1.3-1.6Gb en las ventanas de 32 bits . JIVE funciona muy bien en mi Linux de 64 bits, y parece funcionar bien en otras plataformas.

, Eclipse CDT tiene soporte para la función de depurador histórico.

Abra la configuración de depuración -> Depurador -> Habilite la depuración inversa al inicio .

Luego puede presionar shift+F5 o shift+F6 para retroceder como F5 o F6 para avanzar.

Soy parcial, pero Chronon hace exactamente lo que estás buscando.

Drop to Frame no está dando un paso atrás, ya que si el método ha cambiado algo en el montón, no se revertirá.

Estaba buscando esta característica en Eclipse también. Sé que el estudio visual puede hacer eso. En realidad, puede arrastrar el marcador de línea actual y volver a colocar en cualquier parte del código. No estoy muy seguro de si los cambios en las variables se pueden deshacer. Pero aún así es muy útil y ahorra mucho tiempo. He estado esperando esto en eclipse por mucho tiempo.

La pregunta no especifica un idioma Eclipse, y muchas de las respuestas asumen Java.

Si usa C ++ y GCC con el depurador de GDB, Eclipse tiene Run->Move to Line que hace el trabajo y funciona como la statement siguiente del conjunto de Visual Studio. En este caso, Eclipse está utilizando la capacidad que está en GDB.

Si utilizo Java, no estoy al tanto de cómo hacerlo con Eclipse o Netbeans, aunque otras respuestas han sugerido complementos. Eclipse tiene el comando “drop to frame” que funciona para Java en mi versión (Juno SR1). Si modifico y guardo código dentro de una función en modo de depuración, la línea de ejecución se mueve automáticamente a la parte superior de la función actual y puedo continuar desde allí. No es lo mismo que especificar la línea, pero es algo.