Software Profiling for Deterministic Replay Debugging of User Code

Satish Narayanasamy, Cristiano Pereira, and Brad Calder

The 5th International Conference on Software Methodologies, Tools and Techniques, October 2006


Significant time is spent by companies in trying to reproduce and fix bugs in their software. The process of testing and debugging can immensely benefit from a tool that supports Deterministic Replay Debugging (DRD). A tool that supports DRD will allow a user to record a program's execution in a log, and to deterministically replay every single instruction executed as part of the application using the log.

In this paper, we present the BugNet software tool which can support DRD. It can handle all forms of non-determinism, including the non-determinism due to thread interactions in a multi-threaded application. Since the BugNet tool is operating system independent, a program execution that fails in a particular user's environment can be easily captured by the user in a log, and later reproduced by a developer working in a completely different environment.

We also empirically quantify certain variables relevant to the DRD process. This includes an empirical analysis, that quantifies how much of a program execution has to be logged and replayed in order to understand the root cause of a bug. Further, we examine the potential benefit of using dynamic slicing along with our deterministic replay debugger.