Time travel debugging
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 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 as desired in a forward-only direction. Interactive debuggers include the ability to modify code and step forward based on the updated information.[3] Time traveling debuggers provide these features and also allow users to rewind, or go backwards in time through the steps that resulted in reaching a particular point in the program. Users can interact with the program, changing the history if desired, and watch how the program changes.[4]
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, re-playable 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 re-write execution.[5]
Time traveling debuggers
Debuggers with the ability to step backwards include:
See also
References
- ^ "Time Travel Debugging in WinDbg Preview!". Debugging Tools for Windows. Retrieved 2018-05-08.
- ^ Telles, Matthew; Hsieh, Yuan (2001-04-01). The Science of Debugging. Coriolis Group Books.
- ^ "Interactive Debugging With Node.js - DZone Web Dev". dzone.com. Retrieved 2018-05-08.
- ^ a b "Elm's Time Travelling Debugger". debug.elm-lang.org. Retrieved 2018-05-08.
- ^ "interactive programming". elm-lang.org. Retrieved 2018-05-08.
- ^ "time travel made easy". elm-lang.org. Retrieved 2018-05-08.
- ^ DOMARS. "Time Travel Debugging - Overview". docs.microsoft.com. Retrieved 2018-05-08.