Automated bug isolation via program chipping
- 19 September 2005
- proceedings article
- Published by Association for Computing Machinery (ACM)
Abstract
This paper introduces program chipping, a simple yet effective technique to isolate bugs. This technique automatically removes or chips away parts of a program so that the part that contributes to some symptomatic output becomes more apparent to the user. Program chipping is similar in spirit to traditional program slicing and debugging techniques, but chipping uses very simple techniques based on the syntactic structure of the program. We have developed a chipping tool for Java programs, called ChipperJ, and have run it on a variety of small to large programs, including a Java compiler, looking for various symptoms. The results are promising. The reduced program is generally about 20-35\% of the size of the original. ChipperJ takes less than an hour on large programs to perform this reduction; even if it took overnight, that would be reasonable if it saves the developer time.Keywords
This publication has 16 references indexed in Scilit:
- Simplifying and isolating failure-inducing inputIEEE Transactions on Software Engineering, 2002
- Making slicing practicalPublished by Association for Computing Machinery (ACM) ,2001
- RecPlayACM Transactions on Computer Systems, 1999
- History of the Icon programming languagePublished by Association for Computing Machinery (ACM) ,1996
- Debugging with dynamic slicing and backtrackingSoftware: Practice and Experience, 1993
- Generalized algorithmic debugging and testingPublished by Association for Computing Machinery (ACM) ,1991
- The semantic approach to program slicingPublished by Association for Computing Machinery (ACM) ,1991
- Interprocedural slicing using dependence graphsACM Transactions on Programming Languages and Systems, 1990
- Dynamic program slicingPublished by Association for Computing Machinery (ACM) ,1990
- Identifying the semantic and textual differences between two versions of a programPublished by Association for Computing Machinery (ACM) ,1990