Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Time travel debugging
Process of stepping back in time through source code to understand what is happening during execution of a computer program

Time travel debugging or time traveling debugging is the process of stepping back in time through source code to understand what is happening during execution of a computer program. Typically, debugging and debuggers, tools that assist a user with the process of debugging, allow users to pause the execution of running software and inspect the current state of the program. Users can then step forward in time, stepping into or over statements and proceeding in a forward direction. Interactive debuggers include the ability to modify code and step forward based on updated information. Reverse debugging tools allow users to step backwards in time through the steps that resulted in reaching a particular point in the program. Time traveling debuggers provide these features and also allow users to interact with the program, changing the history if desired, and watch how the program responds.

We don't have any images related to Time travel debugging yet.
We don't have any YouTube videos related to Time travel debugging yet.
We don't have any PDF documents related to Time travel debugging yet.
We don't have any Books related to Time travel debugging yet.
We don't have any archived web articles related to Time travel debugging yet.

Characteristics supporting bi-directional travel

There are several characteristics that support the ability to move backwards as well as forwards in time.

  • Selecting a purely functional programming language helps due to the self-contained nature of pure functions. Pure functions have no side effects and depend only on the information explicitly provided to the function, providing a repeatable, reliable, replayable path through the code.
  • Languages and debuggers that enable hot swapping, the ability to modify code as the code is running, provide some of the requirements necessary to rewind, and potentially rewrite execution.67
  • Tools based on the GNU debugger (GDB), available for compatible languages such as C, C++, Go, and Fortran are capable of reverse debugging, but the effort significantly slows interaction.8

Time traveling debuggers

Examples of debuggers with the ability to step backwards:

LanguageDebuggers
C++rr for x86 Linux, Undo UDB for Linux9
RprovDebugR10
PythonPyTrace11
JavaScriptWallaby.js,12 Meiosis Tracer13
C#RevDeBug
JavaRevDeBug for C# and Java,14 WhyLine for Java,15 Undo UDB
ElmElm Debugger, Elm Reactor16
OCamlocamldebug
GoUndo UDB for Linux17
RustUndo UDB for Linux18
Windows NativeMicrosoft Time Travel Debugging (TTD) Tool19 for native Windows software (x86, x64, ARM, ARM6420), eShard esReven Full System Timeless Analysis for Windows21
Linux NativeeShard esReven Full System Timeless Analysis for Linux22

See also

References

  1. "Time Travel Debugging in WinDbg Preview!". Debugging Tools for Windows. Retrieved 2018-05-08. https://blogs.msdn.microsoft.com/windbg/2017/09/25/time-travel-debugging-in-windbg-preview/

  2. Telles, Matthew; Hsieh, Yuan (2001-04-01). The Science of Debugging. Coriolis Group Books. ISBN 9781576109175. 9781576109175

  3. "Reverse debugging, time travel debugging". undo.io. 9 January 2013. Retrieved 2018-05-08. https://undo.io/resources/whitepapers/reverse-debugging-whitepaper/#introducing-reverse-debugging

  4. "Interactive Debugging With Node.js - DZone Web Dev". dzone.com. Retrieved 2018-05-08. https://dzone.com/articles/interactive-debugging-with-nodejs

  5. "Elm's Time Travelling Debugger". debug.elm-lang.org. Retrieved 2018-05-08. http://debug.elm-lang.org/

  6. "interactive programming". elm-lang.org. Retrieved 2018-05-08. http://elm-lang.org/blog/interactive-programming

  7. "Hot reloading and time travel debugging: what are they?". Code Cartoons. 2015-10-21. Retrieved 2018-05-08. https://code-cartoons.com/hot-reloading-and-time-travel-debugging-what-are-they-3c8ed2812f35

  8. "6 Things You Should Know About Time Travel Debugging". undo.io. 3 January 2015. Retrieved 2018-05-08. https://undo.io/resources/blog-articles/6-things-time-travel-debugging/

  9. "UDB - Time Travel Debugger for C/C++". https://undo.io/udb/

  10. "ProvTools/provDebugR". github.com. 2018-07-31. Retrieved 2018-07-31. https://github.com/provTools/provDebugR

  11. "PyTrace Time Travel Debugger for Python". https://pytrace.com/

  12. "Wallaby.js Introduction: Time Travel Debugger". wallabyjs.com. Retrieved 2020-02-27. https://wallabyjs.com/docs/intro/time-travel-debugger.html

  13. Donut, Fox (2018-04-29). "You Don't Need Redux, MobX, RxJS, Cerebral". Fox Donut. Retrieved 2018-05-24. https://medium.com/@foxdonut00/you-dont-need-redux-mobx-rxjs-cerebral-6a735b150a02

  14. "About RevDeBug". revdebug.com. Retrieved 2020-03-28. https://revdebug.com/doc/tutorial/5.6.0.0/Getting-Started/about-RevDeBug/

  15. "Whyline for Java". cs.cmu.edu. Retrieved 2021-01-21. https://www.cs.cmu.edu/~NatProg/whyline-java.html

  16. "time travel made easy". elm-lang.org. Retrieved 2018-05-08. http://elm-lang.org/blog/time-travel-made-easy

  17. "Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability". https://www.infoq.com/podcasts/debugging-record-replay-data

  18. "Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability". https://www.infoq.com/podcasts/debugging-record-replay-data

  19. DOMARS. "Time Travel Debugging - Overview". docs.microsoft.com. Retrieved 2018-05-08. https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/time-travel-debugging-overview#what-is-time-travel-debugging

  20. "Get WinDbg Preview". Microsoft. https://www.microsoft.com/en-us/p/windbg-preview/9pgjgd53tn86?activetab=pivot:regionofsystemrequirementstab

  21. "Full System Timeless Analysis for Windows". https://eshard.com/esreven#windows

  22. "Full System Timeless Analysis for Linux". https://eshard.com/esreven#linux