Debugging with dynamic slicing and backtracking
- 1 June 1993
- journal article
- research article
- Published by Wiley in Software: Practice and Experience
- Vol. 23 (6) , 589-616
Abstract
Programmers spend considerable time debugging code. Symbolic debuggers provide some help but the task remains complex and difficult. Other than breakpoints and tracing, these tools provide little high‐level help. Programmers must perform many tasks manually that the tools could perform automatically, such as finding which statements in the program affect the value of an output variable for a given test case, and what was the value of a given variable when the control last reached a given program location. If debugging tools provided explicit support for these tasks, the debugging process could be automated to a significant extent.In this paper we present a debugging model, based on dynamic program slicing and execution backtracking techniques, that easily lends itself to automation. This model is based on experience with using these techniques to debug software. We also present a prototype debugging tool, SPYDER, that explicitly supports the proposed model, and with which we are performing further debugging research.Keywords
This publication has 33 references indexed in Scilit:
- The semantic approach to program slicingACM SIGPLAN Notices, 1991
- Dynamic slicing of computer programsJournal of Systems and Software, 1990
- Dynamic program slicingACM SIGPLAN Notices, 1990
- Integrating noninterfering versions of programsACM Transactions on Programming Languages and Systems, 1989
- Demonic memory for process historiesACM SIGPLAN Notices, 1989
- Bibliography on debugging and backtrackingACM SIGSOFT Software Engineering Notes, 1989
- Dbxtool: A window‐based symbolic debugger for sun workstationsSoftware: Practice and Experience, 1986
- Pi: a case study in object-oriented programmingACM SIGPLAN Notices, 1986
- The program dependence graph in a software development environmentACM SIGPLAN Notices, 1984
- User Recovery and Reversal in Interactive SystemsACM Transactions on Programming Languages and Systems, 1984