Sponsored by: National Science Foundation, SERC


Despite the variety of software development tools and techniques, and despite the best efforts of software engineers, software is frequently produced that contains faults (bugs). Even if it were possible to produce fault-free code from this time hence, the huge quantity of existing code to be maintained and reused would require fault detection and elimination technology.

Validation and verification of software is an important part of the software development process. Experience with current methods of software development continues to illustrate the need for testing of software, followed by the identification and repair of bugs exposed by that testing. This debugging process is usually time consuming and labor-intensive, and relies on tools and methodologies little changed from the earliest debuggers developed 30 and 40 years ago. Some studies have shown that 50% or more of the total cost of software development may be attributed to testing and debugging, with nearly 80% of that cost being attributable to fault localization (the first step in debugging).

We were investigating new approaches that could enhance the state of debugging technology, and that might be applied to a wide range of software systems. We were exploring automating methods of using existing information -- information not currently used effectively (or at all) in other debuggers -- to aid the debugger. That information may be present in the mapping of specifications to code, in the behavior of the code when executed against test data, in data produced by the compiler, and in the performance of previous debugging steps.

This project involved research into advanced methods of software debugging, including exploration of new methods of bounded backtracking, dynamic program slicing, slice heuristics, and an active debugging critic.

Selected technical reports

The following are SERC technical reports on research in the Spyder project.

An Execution Backtracking Approach to Program Debugging, by H. Agrawal, Richard A. DeMillo, and Eugene H. Spafford. This paper was published in IEEE Software, May 1991, pp. 21-26.
Efficient Debugging With Slicing and Backtracking, by H. Agrawal, Richard A. DeMillo, and Eugene H. Spafford. An expanded version of this paper appeared as Debugging With Dynamic Slicing and Backtracking in Software Practice & Experience, 23(6), pp.589-616, June 1993.
Dynamic Slicing in the Presence of Unconstrained Pointers, by H. Agrawal, Richard A. DeMillo, and Eugene H. Spafford. This paper appeared in Proceedings of the 4th ACM Symposium on Testing, Analysis and Verification, Oct 1991, pp. 60-73, under the title Dynamic Slicing in the Presence of Pointers, Arrays, and Records.
PDF TR-103-P
Towards Automatic Debugging of Computer Programs, Ph.D. dissertation by H. Agrawal.
PDF TR-116-P
Heuristics for Automatic Localization of Software Faults, by Hsin Pan and Eugene H. Spafford. A shortened version of this paper appeared in Proceedings of the 10th Pacific Northwest Software Quality Conference, Oct 1992, pp. 192--209. An expanded of this paper is to appear in a future issue of Journal of Computer and Software Engineering.
PDF TR-120-P
Experimental Designs: Testing A Debugging Oracle Assistant by Eugene H. Spafford and Chonchanok Viravan.
PDF TR-134-P
Pilot Studies on Debugging Oracle Assistants by Eugene H. Spafford and Chonchanok Viravan.
PDF TR-145-P
Software Debugging With Dynamic Instrumentation and Test-Based Knowledge, Ph.D. dissertation by Hsin Pan.
PDF TR-151-P
Enhancing Debugging Technology, Ph.D. dissertation by Chonchanok Viravan.



Gene Spafford was the lead researcher on this project from its inception. He was co-advisor for Agrawal and Pan's work (below), and advisor for Viravan's work.

Richard DeMillo was co-investigator of the first part of this project. He was co-advisor of Agrawal and Pan's dissertation work.


Hiralal Agrawal received his Ph.D. in August 1991 and is now at Telcordia (formerly Bellcore). For his thesis work, Hiralal developed the theory behind dynamic slicing and bounded backtracking. He then implemented both in the Spyder prototype debugging tool. He can be reached at hira@bellcore.com

Hsin Pan received his Ph.D. in August of 1993 and is now with Verity Systems. For his thsis work, Hsin developed a family of heuristics for combining dynamic slices to localize faults. He further examined several new slicing methods he designed, including criticial slicing.

Chonchanok Viravan ("Nok") received her Ph.D. in May of 1994 and is working for the government of Thailand. For her thesis, Nok developed an active critic system to provide guidance and feedback to users of the Spyder system. The critic provides information shown in experiments to help debugging speed.

Source code

An alpha release of Spyder was available for many years. However, given the changes in software platforms and the age of the code, it was withdrawn in 1999 as no longer functional.

28 February 1994, Gene Spafford; modified 2003.