Dynamic Program Slicing with PinPlay

Dynamic Program Slicing is a dynamic program analysis technique that given a slicing criterion (line number, variable,..) finds all statements in the program affecting (if backward sliced) or affected by (if forward sliced) the slicing criterion for a specific execution.

Dynamic Slicing has been around for decades however the main obstacle in its wide-spread acceptance is the high overhead (both run-time and space) involved. We have addressed the overhead concerns by various techniques described in the CGO 2014 paper on DrDebug (see [1]). We have implemented our techniques in a debugging and analysis toolkit where the Linux debugger GDB is extended to allow interactive dynamic slicing.  By doing dynamic slicing for the recording of a small execution region of a program, the overhead can be managed also providing repeatable dynamic slicing results across multiple debug sessions.


1. DrDebug/PinPlay kit  ( version 2.2 or higher)

2. Eclipse GUI for DrDebug/slicing.

 <Being updated. Download links coming soon.>


  • Dynamic slicing implementation included in the PinPlay/DrDebug toolkit was developed by Yan Wang as part of her Ph.D. at University of California, Riverside, under the supervision of Prof. Rajiv Gupta. The work was supported by a grant from Intel. See license for slicing code from U C Riverside.
  • The Eclipse slicing GUI was implemented by David Wootton with the support from a grant from DARPA to Intel.


1. DrDebug: Deterministic Replay based Cyclic Debugging with Dynamic Slicing; Yan Wang, Harish Patil, Cristiano Pereira, Gregory Lueck, Rajiv Gupta, Iulian Neamtiu. CGO 2014.

Navigate to: PinPlay  | DrDebug 

For more complete information about compiler optimizations, see our Optimization Notice.