Record and replay debugging

{{short description|Software debugging technique}}

Record and replay debugging is the process of recording the execution of a software program so that it may be played back within a debugger to help diagnose and resolve defects.{{cite arXiv |last1=Mozilla |title=Engineering Record And Replay For Deployability Extended Technical Report |year=2017 |class=cs.PL |eprint=1705.05937 }} The concept is analogous to the use of a flight data recorder to diagnose the cause of an airplane flight malfunction.{{cite web |last1=Zicari |first1=Roberto |title=On Software Reliability. Interview with Barry Morris and Dale Vile. |url=http://www.odbms.org/blog/2019/04/on-software-reliability-interview-with-barry-morris-and-dale-vile/ |website=ODBMS Industry Watch |publisher=ODBMS Industry Watch |accessdate=2 April 2019}}

Recording and replaying

Record and replay debuggers record application state at every step of the program's process and thread execution, including memory interactions, deterministic and non-deterministic inputs, system resource status, and store it to disk in a log.{{cite web |last1=Undo, Ltd. |title=System and method for debugging of computer programs |url=https://patents.google.com/patent/US9268666 |website=Google Patents |publisher=US Patent Office |accessdate=23 February 2016}} The recording allows the program to be replayed again and again, and debugged exactly as it happened.

Usage

Recordings can be made in one location and replayed in another,{{cite web |last1=Undo, Ltd |title=Remote recording |url=https://docs.undo.io/RemoteDebugging.html |website=Undo Documentation |publisher=Undo, Ltd. |accessdate=1 October 2019}} which makes it useful for remote debugging.

Record and replay debugging is particularly useful for debugging intermittent and non-deterministic defects, which can be difficult to reproduce.

Record and replay debugging technology is often fundamental to reverse debugging and time travel debugging.

Record and replay debuggers

  • GDB (GNU){{cite web|url=https://sourceware.org/gdb/current/onlinedocs/gdb/Process-Record-and-Replay.html|title = Process Record and Replay (Debugging with GDB)}}
  • LiveRecorder (Undo){{cite web|url=https://undo.io/solutions/products/live-recorder/|title = LiveRecorder - Undo}}
  • rr (Mozilla)
  • TotalView's ReplayEngine (RogueWave){{cite web|url=https://help.totalview.io/previous_releases/2019/html/index.html#page/User_Guides%2FUsingReplayEngine.html%23|title = TotalView for HPC}}
  • PyTrace for Python{{cite web|url=https://pytrace.com/|title = PyTrace Time Travel Debugger for Python}}

References

{{Reflist}}

Category:Debuggers