Execution Synthesis: A Technique for Automated Software Debugging

14 years 1 months ago
Execution Synthesis: A Technique for Automated Software Debugging
Debugging real systems is hard, requires deep knowledge of the code, and is time-consuming. Bug reports rarely provide sufficient information, thus forcing developers to turn into detectives searching for an explanation of how the program could have arrived at the reported failure point. Execution synthesis is a technique for automating this detective work: given a program and a bug report, it automatically produces an execution of the program that leads to the reported bug symptoms. Using a combination of static analysis and symbolic execution, it “synthesizes” a thread schedule and various required program inputs that cause the bug to manifest. The synthesized execution can be played back deterministically in a regular debugger, like gdb. This is particularly useful in debugging concurrency bugs. Our technique requires no runtime tracing or program modifications, thus incurring no runtime overhead and being practical for use in production systems. We evaluate ESD— a debugger...
Cristian Zamfir, George Candea
Added 10 Mar 2010
Updated 10 Mar 2010
Type Conference
Year 2010
Authors Cristian Zamfir, George Candea
Comments (0)