Significant time is spent by companies trying to reproduce and fix bugs. We recently proposed a hardware logging approach called BugNet to aid debugging, by capturing the last few million instructions that occurred right before a bug that results in a crash. A developer can then use this log to deterministically replay the recent portion of execution that lead to the crash. We call this Deterministic Replay Debugging. In this paper, we present a software version of BugNet to be used by developers and quality assurance engineers to efficiently track down bugs. Our software approach does not require any hardware support, and the logs can be used to find bugs that result in a crash as well as those that cause wrong answers, instead of only focusing on bugs that cause crashes as in BugNet. The approach only logs the load values that have changed in order to provide deterministic replay across system calls, interrupts and DMA transfers. In addition, we present implementation details for our deterministic replay debugger. This includes detailed analysis measuring exactly how much execution needs to be logged in order to make sure we have captured the cause of the bug, and quantifying the benefit of using dynamic slicing to aid our deterministic replay debugger.
The authors of these documents have submitted their reports to this technical report series for the purpose of non-commercial dissemination of scientific work. The reports are copyrighted by the authors, and their existence in electronic format does not imply that the authors have relinquished any rights. You may copy a report for scholarly, non-commercial purposes, such as research or instruction, provided that you agree to respect the author's copyright. For information concerning the use of this document for other than research or instructional purposes, contact the authors. Other information concerning this technical report series can be obtained from the Computer Science and Engineering Department at the University of California at San Diego, firstname.lastname@example.org.
[ Search ]