Nunca he usado un depurador con la capacidad de retroceder. Acabo de hacer una búsqueda en Google y no encontré mucho ...
encontré esto: http://video.google.com/videoplay?docid=3897010229726822034
La búsqueda de "Bill Lewis depurador" me llevó a: http://undo-software.com/undodb_about.html
La capacidad de un paso atrás implica preservar un montón de estado: si cambia una variable en una línea de código, y luego desea retroceder, es de suponer que la variable debería volver a su valor anterior. Si cambia un registro, debería volver a su valor anterior, y eso incluye el registro de banderas. Si asignó la memoria, presumiblemente debería ser desasignada. Y así. Es un gran trabajo en general. Parece que este depurador está utilizando la tecnología de copiar y escribir para hacer todo esto. Supongo que si una máquina virtual como VirtualBox es posible, también lo es.
Esto todavía no es una función principal. Una característica I tiene que se ve comúnmente es la capacidad de "establecer la siguiente línea". Digamos que llamas a una función y devuelve un valor que te sorprende; configura la "línea siguiente" a la línea antes de la función y luego realiza un solo paso en la función. El depurador de Microsoft Visual Studio puede hacer esto y también gdb (el comando jump
). Esta capacidad es de uso limitado si la función corrompió la pila. Entonces, ¡realmente necesitas comenzar de nuevo!
Las computadoras se han vuelto tan rápidas, que es mucho menos doloroso volver a empezar desde el principio de lo que solía ser. Puede establecer un punto de interrupción antes del punto donde desea regresar y volver a ejecutar el programa desde el principio.