Time travel debugging explained

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.[1] 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.[2] Users can then step forward in time, stepping into or over statements and proceeding in a forward direction.[3] Interactive debuggers include the ability to modify code and step forward based on updated information.[4] 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.[5]

Characteristics supporting bi-directional travel

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

Time traveling debuggers

Examples of debuggers with the ability to step backwards:

Language Debuggers
rr for x86 Linux, Undo UDB for Linux[9]
provDebugR[10]
PyTrace[11]
Wallaby.js,[12] Meiosis Tracer[13]
RevDeBug
Elm Debugger, Elm Reactor[16]
ocamldebug
Undo UDB for Linux[17]
Undo UDB for Linux[18]
Windows Native Microsoft Time Travel Debugging (TTD) Tool[19] for native Windows software (x86, x64, ARM, ARM64[20]), eShard esReven Full System Timeless Analysis for Windows[21]
Linux Native eShard esReven Full System Timeless Analysis for Linux[22]

See also

Notes and References

  1. News: Time Travel Debugging in WinDbg Preview!. Debugging Tools for Windows. 2018-05-08. en-US.
  2. Book: The Science of Debugging. Telles. Matthew. Hsieh. Yuan. 2001-04-01. Coriolis Group Books. 9781576109175.
  3. Web site: Reverse debugging, time travel debugging. undo.io. 9 January 2013 . 2018-05-08.
  4. News: Interactive Debugging With Node.js - DZone Web Dev. dzone.com. 2018-05-08. en.
  5. Web site: Elm's Time Travelling Debugger. debug.elm-lang.org. 2018-05-08.
  6. Web site: interactive programming. elm-lang.org. 2018-05-08.
  7. News: Hot reloading and time travel debugging: what are they?. 2015-10-21. Code Cartoons. 2018-05-08.
  8. Web site: 6 Things You Should Know About Time Travel Debugging. undo.io. 3 January 2015 . 2018-05-08.
  9. Web site: UDB - Time Travel Debugger for C/C++.
  10. Web site: ProvTools/provDebugR. 2018-07-31. github.com. en-us. 2018-07-31.
  11. Web site: PyTrace Time Travel Debugger for Python.
  12. Web site: Wallaby.js Introduction: Time Travel Debugger. wallabyjs.com. 2020-02-27.
  13. Web site: You Don't Need Redux, MobX, RxJS, Cerebral. Donut. Fox. 2018-04-29. Fox Donut. 2018-05-24.
  14. Web site: About RevDeBug. revdebug.com. 2020-03-28.
  15. Web site: Whyline for Java. cs.cmu.edu. 2021-01-21.
  16. Web site: time travel made easy. elm-lang.org. 2018-05-08.
  17. Web site: Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability.
  18. Web site: Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability.
  19. Web site: Time Travel Debugging - Overview. DOMARS. docs.microsoft.com. en-us. 2018-05-08.
  20. Web site: Get WinDbg Preview. .
  21. Web site: Full System Timeless Analysis for Windows.
  22. Web site: Full System Timeless Analysis for Linux.