gdb debugging reverse-debugging

gdb - Depuración bidireccional(o inversa)



debugging reverse-debugging (10)

¿Alguien ha usado un depurador reversible? El único producto que Google presenta es UndoDB . Es aparentemente solo para Linux.


La palabra que buscas puede ser "Depuración Omnisciente".

Aquí hay uno: http://www.lambdacs.com/debugger/

La página UndoDB tiene algunos enlaces a depuradores comerciales (caros).


Se supone que VS 2010 tiene algo como esto, creo.



La última versión de gdb 7.0 (lanzada esta semana) admite la depuración inversa en varias plataformas (por ejemplo, i386 nativo y x86_64 linux, estación de trabajo VMware, UndoDB y simuladores Simics de Virtutech). ftp://ftp.gnu.org/pub/gdb

Funciona con la última versión preliminar / prelanzamiento de la estación de trabajo VMware 7.0, que también es compatible con la depuración inversa de los invitados de MSWindows utilizando el depurador de Visual Studio. Obtenga una versión de prueba gratuita de la estación de trabajo 7.0 en http://communities.vmware.com/community/beta/workstation , y encuentre algunos consejos útiles sobre el uso aquí en http://communities.vmware.com/docs/DOC-10714.


El recientemente lanzado gdb-7.0 incluye capacidad de depuración inversa para linux nativo x86 y x86_64. Puede depurar cualquier programa de Linux como de costumbre, activar la función de "grabación", y desde ese punto, si avanza demasiado, puede retroceder o retroceder-continuar hasta un punto de interrupción.


Sí, lo he usado en el 90. El Depurador Watcom C (entendido como FORTRAN y la mayoría de los demás idiomas también) tenía la opción de permitirte dar un paso atrás y avanzar a tiempo.

Es genial, pero no es una gran novedad ...


Como una nota histórica divertida, EXDAMS implementó una depuración inversa post-mortem a finales de los años 60 para MULTICS.



Aunque esta pregunta es antigua, la depuración inversa sigue siendo un tema interesante, así que pensé en publicar una respuesta actualizada. Mi tesis, que combina la depuración inversa y la programación en vivo para el pensamiento visual en la programación de computadoras , cubre algunos de los enfoques históricos y explica la diferencia entre la depuración omnisciente y la depuración inversa verdadera:

La computadora, después de haber ejecutado el programa hasta cierto punto, realmente debería ser capaz de proporcionarnos información al respecto. Tal mejora es posible, y se encuentra en lo que se llaman depuradores omniscientes. Generalmente se clasifican como depuradores inversos, aunque podrían describirse con mayor precisión como depuradores de "registro de historial", ya que simplemente registran la información durante la ejecución para verla o consultarla más tarde, en lugar de permitir al programador retroceder en el tiempo en un programa en ejecución . "Omnisciente" proviene del hecho de que toda la historia del estado del programa, una vez registrada, está disponible para el depurador después de la ejecución. Entonces no hay necesidad de volver a ejecutar el programa, y ​​no hay necesidad de instrumentación de código manual.

La depuración omnisciente basada en software comenzó con el sistema EXDAMS de 1969, donde se denominó "reproducción de historial en tiempo de depuración". El depurador de GNU, GDB, ha soportado la depuración omnisciente desde 2009, con su función ''grabar y reproducir el proceso''. TotalView, UndoDB y Chronon parecen ser los mejores depuradores omniscientes actualmente disponibles, pero son sistemas comerciales. TOD, para Java, parece ser la mejor alternativa de código abierto, que hace uso de la reproducción determinista parcial, así como la captura parcial de trazas y una base de datos distribuida para permitir el registro de los grandes volúmenes de información involucrados.

También existen los depuradores que no solo permiten la navegación de una grabación, sino que también pueden retroceder en el tiempo de ejecución. Se pueden describir con más precisión como depuradores de retroceso en el tiempo, de viaje en el tiempo, bidireccionales o inversos.

El primer sistema de este tipo fue el prototipo COPE 1981 ...


Estoy usando UndoDB en Linux en lugar de simple gdb para cada sesión de depuración. La depuración inversa es muy útil y acelera la depuración de manera significativa. Puede comenzar la depuración desde el síntoma del problema (por ejemplo, error de afirmación o se imprime algún mensaje incorrecto) y depurarlo en el tiempo, buscando la causa raíz del problema.