DrDebug: Deterministic Replay based Cyclic Debugging with Dynamic Slicing

We present a collection of tools, DrDebug, that greatly advances the state-of-the-art of cyclic, interactive debugging of multi-threaded programs based upon the record and replay paradigm. The features of DrDebug significantly increase the efficiency of debugging by tailoring the scope of replay to a buggy execution region or an execution slice of a buggy region. In addition to supporting traditional debugger commands, DrDebug provides commands for recording, replaying, and dynamic slicing with several novel features. First, upon a user's request, a highly precise dynamic slice is computed that can then be browsed by the user by navigating the dynamic dependence graph with the assistance of our graphical user interface. Second, a dynamic slice of interest to the user can be used to compute an execution slice whose replay can then be carried out. Due to narrow scope, the replay can be performed efficiently as execution of code segments that do not belong to the execution slice is skipped. We also provide the capability of allowing the user to step from the execution of one statement in the slice to the next while examining the values of variables. To the best of our knowledge, this capability cannot be found in any other slicing tool. We have also integrated DrDebug with the Maple tool that exposes bugs and records buggy executions for replay. Our experiments demonstrate DrDebug's practicality.

[1]  Christian Bienia,et al.  Benchmarking modern multiprocessors , 2011 .

[2]  Jens Krinke,et al.  Context-sensitive slicing of concurrent programs , 2003, ESEC/FSE-11.

[3]  James Cownie,et al.  PinPlay: a framework for deterministic replay and reproducible analysis of parallel programs , 2010, CGO '10.

[4]  Jeff Huang,et al.  LEAN: simplifying concurrency bug reproduction via replay-supported execution reduction , 2012, OOPSLA '12.

[5]  Xiangyu Zhang,et al.  Pruning dynamic slices with confidence , 2006, PLDI '06.

[6]  Yan Wang,et al.  Isolating bugs in multithreaded programs using execution suppression , 2011, Softw. Pract. Exp..

[7]  Mangala Gowri Nanda,et al.  Interprocedural slicing of multithreaded programs with applications to Java , 2006, TOPL.

[8]  Satish Narayanasamy,et al.  BugNet: continuously recording program execution for deterministic replay debugging , 2005, 32nd International Symposium on Computer Architecture (ISCA'05).

[9]  Nicholas Nethercote,et al.  Valgrind: a framework for heavyweight dynamic binary instrumentation , 2007, PLDI '07.

[10]  Satish Narayanasamy,et al.  Maple: a coverage-driven testing tool for multithreaded programs , 2012, OOPSLA '12.

[11]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

[12]  Xiangyu Zhang,et al.  Precise dynamic slicing algorithms , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[13]  Satish Narayanasamy,et al.  A case for an interleaving constrained shared-memory multi-processor , 2009, ISCA '09.

[14]  Xiangyu Zhang,et al.  Memory slicing , 2009, ISSTA.

[15]  Xiangyu Zhang,et al.  Toward generating reducible replay logs , 2011, PLDI '11.

[16]  Shan Lu,et al.  ConMem: detecting severe concurrency bugs through an effect-oriented approach , 2010, ASPLOS XV.

[17]  Xiangyu Zhang,et al.  Enabling tracing Of long-running multithreaded programs via dynamic execution reduction , 2007, ISSTA '07.

[18]  Wen Du,et al.  Function Call Flow based Fitness Function Design in Evolutionary Testing , 2007, 14th Asia-Pacific Software Engineering Conference (APSEC'07).

[19]  Harish Patil,et al.  PinADX: an interface for customizable debugging with dynamic instrumentation , 2012, CGO '12.

[20]  Rudolf Eigenmann,et al.  SPEComp: A New Benchmark Suite for Measuring Parallel Computer Performance , 2001, WOMPAT.

[21]  Xiangyu Zhang,et al.  Dynamic slicing long running programs through execution fast forwarding , 2006, SIGSOFT '06/FSE-14.

[22]  Xiangyu Zhang,et al.  Analyzing concurrency bugs using dual slicing , 2010, ISSTA '10.

[23]  Rajiv Gupta,et al.  Dynamic slicing of multithreaded programs for race detection , 2008, 2008 IEEE International Conference on Software Maintenance.

[24]  B. Myers Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior , 2008 .

[25]  Satish Narayanasamy,et al.  Automatic logging of operating system effects to guide application-level architecture simulation , 2006, SIGMETRICS '06/Performance '06.

[26]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[27]  Xiangyu Zhang,et al.  Efficient online detection of dynamic control dependence , 2007, ISSTA '07.