Jump to content

Time travel debugging

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Cypherquest (talk | contribs) at 18:00, 8 May 2018 (initial article on time travelling debugging. Created as a new article due to the already somewhat complex article on debugging and its role in software development. This article still needs to be expanded to cover more of what lies behind the ability to roll back and rewrite history - it is just a start on a relatively new but noteworthy topic in its own right.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

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

  1. ^ "Time Travel Debugging in WinDbg Preview!". Debugging Tools for Windows. Retrieved 2018-05-08.
  2. ^ Telles, Matthew; Hsieh, Yuan (2001-04-01). The Science of Debugging. Coriolis Group Books.
  3. ^ "Interactive Debugging With Node.js - DZone Web Dev". dzone.com. Retrieved 2018-05-08.
  4. ^ a b "Elm's Time Travelling Debugger". debug.elm-lang.org. Retrieved 2018-05-08.
  5. ^ "interactive programming". elm-lang.org. Retrieved 2018-05-08.
  6. ^ "time travel made easy". elm-lang.org. Retrieved 2018-05-08.
  7. ^ DOMARS. "Time Travel Debugging - Overview". docs.microsoft.com. Retrieved 2018-05-08.