Record and replay debugging

Last updated

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. [1] The concept is analogous to the use of a flight data recorder to diagnose the cause of an airplane flight malfunction. [2]

Contents

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. [3] 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, [4] 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

Related Research Articles

GNU Debugger Source-level debugger

The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go, and partially others.

Debugger Computer program used to test and debug other programs

A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its operations in progress and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.

A digital video recorder (DVR) is an electronic device that records video in a digital format to a disk drive, USB flash drive, SD memory card, SSD or other local or networked mass storage device. The term includes set-top boxes with direct to disk recording, portable media players and TV gateways with recording capability, and digital camcorders. Personal computers are often connected to video capture devices and used as DVRs; in such cases the application software used to record video is an integral part of the DVR. Many DVRs are classified as consumer electronic devices; such devices may alternatively be referred to as personal video recorders (PVRs), particularly in Canada. Similar small devices with built-in displays and SSD support may be used for professional film or video production, as these recorders often do not have the limitations that built-in recorders in cameras have, offering wider codec support, the removal of recording time limitations and higher bitrates.

Breakpoint Debugging method used in software development

In software development, a breakpoint is an intentional stopping or pausing place in a program, put in place for debugging purposes. It is also sometimes simply referred to as a pause.

Open-source software development (OSSD) is the process by which open-source software, or similar software whose source code is publicly available, is developed by an open-source software project. These are software products available with its source code under an open-source license to study, change, and improve its design. Examples of some popular open-source software products are Mozilla Firefox, Google Chromium, Android, LibreOffice and the VLC media player.

Crash reporter System software that identify and report crash details

A crash reporter is usually a system software whose function is to identify reporting crash details and to alert when there are crashes, in production or on development / testing environments. Crash reports often include data such as stack traces, type of crash, trends and version of software. These reports help software developers- Web, SAAS, mobile apps and more, to diagnose and fix the underlying problem causing the crashes. Crash reports may contain sensitive information such as passwords, email addresses, and contact information, and so have become objects of interest for researchers in the field of computer security.

Aptana Text editor

Aptana, Inc. is a company that makes web application development tools for use with a variety of programming languages. Aptana's main products include Aptana Studio, Aptana Cloud and Aptana Jaxer.

In software engineering, tracing involves a specialized use of logging to record information about a program's execution. This information is typically used by programmers for debugging purposes, and additionally, depending on the type and detail of information contained in a trace log, by experienced system administrators or technical-support personnel and by software monitoring tools to diagnose common problems with software. Tracing is a cross-cutting concern.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

Program animation or stepping refers to the debugging method of executing code one instruction or line at a time. The programmer may examine the state of the program, machine, and related data before and after execution of a particular line of code. This allows the programmer to evaluate the effects of each statement or instruction in isolation, and thereby gain insight into the behavior of the executing program. Nearly all modern IDEs and debuggers support this mode of execution.

Intel Inspector is a memory and thread checking and debugging tool to increase the reliability, security, and accuracy of C/C++ and Fortran applications.


The Wing Python IDE family of integrated development environments (IDEs) from Wingware was created specifically for the Python programming language, with support for editing, testing, debugging, inspecting/browsing, and error checking Python code.

In computer programming and software development, debugging is the process of finding and resolving bugs within computer programs, software, or systems.

In computing, rr is a debugging tool for Linux designed to record and replay program execution. During the replay phase, rr provides an enhanced gdb debugging experience that supports reverse execution.

In computing, virtual machine introspection (VMI) is a technique "for monitoring the runtime state of a system-level virtual machine (VM)", which is helpful for debugging or forensic analysis.

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

Undo is a software debugging company based in Cambridge, UK. The company was founded in 2005 by Greg Law and Julian Smith. Undo’s technology is used by software engineering teams to debug software programs.

References

  1. Mozilla (2017). "Engineering Record And Replay For Deployability Extended Technical Report". arXiv: 1705.05937 [cs.PL].
  2. Zicari, Roberto. "On Software Reliability. Interview with Barry Morris and Dale Vile". ODBMS Industry Watch. ODBMS Industry Watch. Retrieved 2 April 2019.
  3. Undo, Ltd. "System and method for debugging of computer programs". Google Patents. US Patent Office. Retrieved 23 February 2016.
  4. Undo, Ltd. "Remote recording". Undo Documentation. Undo, Ltd. Retrieved 1 October 2019.
  5. "Process Record and Replay (Debugging with GDB)".
  6. "LiveRecorder - Undo".
  7. "TotalView for HPC".
  8. "PyTrace Time Travel Debugger for Python".