Program debugging, however, involves analyzing the program behavior under the specific inputs that revealed the bug. Several approaches for computing dynamic slices are examined. The notion of a Dynamic Dependence Graph and its use in computing dynamic slices is discussed. We introduce the concept of a Reduced Dynamic Dependence Graph whose size does not depend on the length of execution history, which is unbounded in general, but whose size is bounded and is proportional to the number of dynamic slices arising during the program execution. A revision of this paper has been submitted to Software Practice and Experience.
Programmers spend considerable time debugging code.
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 o which debuggers are used. It combines dynamic program slicing and execution backtracking techniques in an 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.