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.
Downloads
1. DrDebug/PinPlay kit ( version 2.2 or higher)
2. Eclipse GUI for DrDebug/slicing.
<Being updated. Download links coming soon.>
Acknowledgements
- 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.
Publications
1. DrDebug: Deterministic Replay based Cyclic Debugging with Dynamic Slicing; Yan Wang, Harish Patil, Cristiano Pereira, Gregory Lueck, Rajiv Gupta, Iulian Neamtiu. CGO 2014.