Efficient Debugging with Slicing and Backtracking

Programmers spend considerable time debugging code. Several tools are available to help them in this task, varying from hexadecimal dumps of program state to windowand mouse-based interactive debuggers, but the task still remains complex and difficult. Most of these conventional debuggers provide breakpoints and traces as their main debugging aids. These features have changed little in the past 15–20 years despite the increased complexity of software systems on which debuggers are used. In this paper we present a prototype tool that enables users to follow their “natural” thought process while debugging. It combines dynamic program slicing and execution backtracking techniques in a novel way. With the help of this powerful combination, program bugs may be localized and removed very quickly. Examples are given to show how our debugger may be used, and how it relates to other research in the area.

[1]  Thomas A. Cargill Pi: a case study in object-oriented programming , 1986, OOPLSA '86.

[2]  Bernard Carré,et al.  Information-flow and data-flow analysis of while-programs , 1985, TOPL.

[3]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[4]  Marvin Zelkowitz,et al.  Reversible Execution as a Diagnostic Tool , 1971 .

[5]  John D. Gould,et al.  An Exploratory Study of Computer Program Debugging1 , 1974 .

[6]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984 .

[7]  Philip G. Johnson Cornell University , 1897, The Journal of comparative medicine and veterinary archives.

[8]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[9]  R. M. Balzer,et al.  EXDAMS-Extendible Debugging and Monitoring Systems , 1899 .

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

[11]  Jong-Deok Choi,et al.  A mechanism for efficient debugging of parallel programs , 1988, PADD '88.

[12]  Fred B. Schneider,et al.  User Recovery and Reversal in Interactive Systems , 1984, TOPL.

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

[14]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[15]  Jong-Deok Choi,et al.  A Mechanism for Efficient Debugging of Parallel Programs , 1988, PLDI.

[16]  I. G. BONNER CLAPPISON Editor , 1960, The Electric Power Engineering Handbook - Five Volume Set.

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

[18]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[19]  H. Agrawal,et al.  Bibliography on debugging and backtracking , 1989, SOEN.

[20]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[21]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..

[22]  Steven S. Muchnick,et al.  Dbxtool: A window‐based symbolic debugger for sun workstations , 1986, Softw. Pract. Exp..

[23]  F. J. Lukey Understanding and debugging programs , 1980 .

[24]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[25]  Denis Johnson In Palo Alto , 1982 .

[26]  Charles E. McDowell,et al.  Debugging concurrent programs , 1989, ACM Comput. Surv..