Un depurador histórico puede revertir el estado del programa (incluidas las instrucciones actuales) a un estado anterior. ¿Cómo es esto posible en entornos administrados o no administrados? No me puedo imaginar que el depurador tome una imagen del estado de todo el sistema en cada instrucción.¿Cómo funciona un depurador histórico?
Respuesta
Una forma de hacerlo es registrar las fuentes de no determinismo en el sistema (E/S, interrupciones) y tomar instantáneas de estado en varios intervalos. De esta manera, puede "rebobinar" volviendo a una instantánea anterior y reproduciendo usando el no determinismo grabado hasta que llegue al punto deseado en el pasado.
Por ejemplo, imagina esta línea de tiempo:
1 2 3 4
| | | |
- Programa inicia
- instantánea Estado tomada por depurador histórica
- El punto en el tiempo en que el usuario desea rebobinar
- Ahora
Supongamos que el usuario quiere t o rebobinar al punto 3. Puede hacerlo restaurando el estado del sistema (p. memoria, registros) al punto 2 y dejar que el sistema se ejecute como de costumbre hasta que llegue al punto 3. Cuando se necesitan datos del disco, la red o alguna otra fuente no determinista, el depurador histórico puede usar su información registrada para proporcionar los datos . Para el usuario, parece que el estado del programa simplemente se restauró al punto 3.
Creo que esta es una vista simplificada de cómo funciona VMWare's Replay Debugger (consulte también tech talk).
Idea interesante, parece razonable. ¿Sabes si alguno de los depuradores históricos populares realmente usa este enfoque? ¿Conoces otras formas que están en uso para lograr el mismo objetivo? – mafu
Probablemente toma una instantánea del estado cada vez, pero sólo conserva los deltas entre los estados (por supuesto, es imposible decir exactamente cómo la una dada realmente funciona sin mirar a su código).
Bueno, lo más importante es que no capturan en cada instrucción solo en varios "puntos de interés" (por ejemplo, cuando se lanza una excepción, cuando se llaman ciertos métodos, etc.). Por ejemplo, las instantáneas de IntelliTrace de Microsoft (en VS2010) sobre el acceso al sistema de archivos y el registro, las interacciones con la interfaz de usuario de WinForms, etc.
En segundo lugar, no incluye la instantánea todo el estado del programa. Por ejemplo, cuando accede a un archivo, IntelliTrace registra el nombre del archivo, los permisos de acceso que solicitó, etc., pero no puede volver a ese punto y observar el estado de cada variable global.
No conozco otros depuradores históricos, pero así es como IntelliTrace funciona en VS2010, de todos modos.
- 1. ¿Cómo funciona un depurador?
- 2. ¿Cómo busco contenido histórico de archivos mercuriales?
- 3. JetBrains RubyMine 3.2.4 depurador no funciona
- 4. ¿Cómo escribir un depurador simple?
- 5. ¿Cómo funciona un depurador como gdb para establecer un punto de interrupción a través de JTAG?
- 6. Almacenamiento histórico de datos de MongoDB: ¿práctica recomendada?
- 7. Firebug 1.9.1 en el depurador Firefox 11 no funciona
- 8. Escribiendo un depurador muy básico
- 9. ¿Dónde funciona la función "Make Object ID" del depurador VB.Net?
- 10. GUI para un depurador GNU
- 11. Cómo adjuntar un depurador dinámicamente a un proceso específico
- 12. ¿Cómo funciona un ActionListener?
- 13. ¿Cómo funciona un enlace?
- 14. ¿Cómo funciona un ensamblador?
- 15. Invocando el depurador desde un programa C
- 16. Escribir un depurador de eclipse personalizado
- 17. depurador de emacs: ¿cómo puedo un step-out, step-over?
- 18. ¿Cómo adjuntar el depurador a un subproceso de python?
- 19. Cómo adjuntar un depurador en la creación del proceso?
- 20. ¿Cómo miro un objeto en el depurador de Xcode?
- 21. Depurador RubyMine con Rake?
- 22. Meteor JS, ejecutándose en un depurador?
- 23. ¿Hay un depurador/espía de SWT?
- 24. bloque del depurador
- 25. Depurador .NET ligero.
- 26. ¿Cómo retroceder en el depurador de Eclipse?
- 27. cómo desactivar el depurador en sbcl
- 28. ¿Cómo usar el depurador OcaIDE en Eclipse?
- 29. Delphi: cómo excluir unidades del depurador?
- 30. Eclipse con Intel Fortran depurador
tiene un cronómetro incorporado. La mayoría de los cronómetros tienen solo un getter, pero este también tiene un setter. Ver p. 15 de la guía de instalación - instalación del agujero de gusano micro. – mdma