Abstract: Provided are a system and method for precisely reproducing a device program execution, such as reproducing a software program executed on a computer for example. The method provides a solution to a class of diagnosis methods known as “record/replay” or “deterministic replay”, where information related to a program execution is recorded for later replay, often for diagnostic purposes to reproduce errors in device function such as software bugs and other anomalous behavior.
Abstract: A method is disclosed for recording and replaying computer programs. In one embodiment, a method of modifying a computer program to support recording execution, comprises the computer-implemented steps of receiving an executable application binary; modifying the executable application binary by adding one or more proxy code elements to result in creating a modified application binary, wherein upon execution of the modified application binary, the one or more proxy code elements create and store recorded information representing all non-deterministic events that occur during the execution. For example, asynchronous callbacks and thread context switches are recorded and can be replayed.
Abstract: Recording and replaying computer programs includes state synchronization and thread management techniques that facilitate accurately replaying the recorded execution of a multithreaded application program. State synchronization comprises, during execution of an application program in a computer system, detecting an operation of the application program to write a memory; preventing the operation to write the memory; storing a representation of the memory; permitting the operation to write the memory, resulting in written memory; comparing the written memory to the stored representation; and in response to determining that the written memory is different than the stored representation, generating a notification that a memory state synchronization exception occurred.