[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.
[3] Interactive debuggers include the ability to modify code and step forward based on updated information.
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] There are several characteristics that support the ability to move backwards as well as forwards in time.
Examples of debuggers with the ability to step backwards: