|
|
|
Flashback: A Light-weight Extension for Rollback and Deterministic Replay
for Software Debugging. Abstract: Software robustness has significant impact on system reliability and availability. Unfortunately, finding software bugs is a very challenging task because many bugs are hard to reproduce when the program is recompiled with heavy instrumentation and executed in a debugging run. Consequently, it is important to provide efficient support to rollback the program to a previous execution point and deterministically re-execute the buggy code region. Most previous work on rollback involves mechanisms to survive hardware or operating system failure, and as such are too heavy-weight for the fine-grained rollback needed for software debugging. This paper presents a light-weight solution to support fine-grained rollback for the purpose of software debugging. Our solution uses virtual processes/shadow processes to efficiently rollback in-memory state of a process, and uses process-based file versioning to rollback file system updates made by the debugged process. We have implemented this solution in the Linux operating system and gdb. Our experimental results with micro-benchmarks and real applications show that our system adds little overhead and can quickly roll-back programs to a previous execution point. The Linux and gdb patches will soon be released to public. Flashback is currently used by various research groups and classes at UIUC as beta-users. |
|
|