The Slice Navigator: Focused Debugging with Interactive Dynamic Slicing

Slicing is a technique to reduce the amount of code that needs to be analyzed for a given problem. In this paper, we present the Slice Navigator, a debugging tool for Java programs that combines dynamic slicing with back-in-time debugging data to support the debugging process in multiple ways. Firstly, it supports the developer's short term memory by providing a summary of relevant program state and context for the current instruction. Secondly, it provides an alternative to breakpoints as it can be used to control the debugger to jump to related instructions, such as the last change of a variable. Thirdly, it allows to directly reconfigure the slicing criteria, enabling the developer to minimize the search space of active code without interrupting the debugging workflow. The paper focuses on the UI and implementation of the Slice Navigator view and how it changes the debugging workflow. A performance evaluation shows the feasibility of our approach for larger programs.

[1]  Matthias Uflacker,et al.  Dynamic slicing with soot , 2014, SOAP '14.

[2]  Robert Balzer,et al.  EXDAMS: extendable debugging and monitoring system , 1969, AFIPS '69 (Spring).

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

[4]  Bil Lewis,et al.  Debugging Backwards in Time , 2003, ArXiv.

[5]  Janusz W. Laski,et al.  Dynamic slicing of computer programs , 1990, J. Syst. Softw..

[6]  Éric Tanter,et al.  Processing , 1988 .

[7]  Oscar Nierstrasz,et al.  Practical Object-Oriented Back-in-Time Debugging , 2008, ECOOP.

[8]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[9]  Eugene H. Spafford,et al.  Debugging with dynamic slicing and backtracking , 1993, Softw. Pract. Exp..

[10]  Stuart I. Feldman,et al.  IGOR: a system for program debugging via reversible execution , 1988, PADD '88.

[11]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.