PROUST: an automatic debugger for PASCAL programs
BYTE - Lecture notes in computer science Vol. 174
PROUST: Knowledge-Based Program Understanding
IEEE Transactions on Software Engineering
The Programmer's Apprentice: A Session with KBEmacs
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Rational debugging in logic programming
Proceedings on Third international conference on logic programming
Automatic program debugging for intelligent tutoring systems
Automatic program debugging for intelligent tutoring systems
Debugging by skilled and novice programmers
CHI '86 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
PRESET–a debugging environment for Prolog
Proceedings of the 4th conference on Logic programming '85
Error diagnosis in logic programming, an adaptation of E.Y. Shapiro's method
Journal of Logic Programming
CHI '85 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Programmers use slices when debugging
Communications of the ACM
Using Logic Programming for Fault Diagnosis in Digital Circuits
GWAI '87 Proceedings of the 11th German Workshop on Artificial Intelligence
Knowledge-based fault localization in debugging (Preliminary Draft)
SIGSOFT '83 Proceedings of the ACM SIGSOFT/SIGPLAN software engineering symposium on High-level debugging
A database model of debugging (Preliminary Draft)
SIGSOFT '83 Proceedings of the ACM SIGSOFT/SIGPLAN software engineering symposium on High-level debugging
Talus: Automatic Program Debugging for Intelligent Tutoring Systems
Talus: Automatic Program Debugging for Intelligent Tutoring Systems
Algorithmic program debugging
Evaluating variations on program slicing for debugging (data-flow, ada)
Evaluating variations on program slicing for debugging (data-flow, ada)
Adaptability and portability of symbolic debuggers
Adaptability and portability of symbolic debuggers
OPIUM: a debugging environment for Prolog development and debugging research
ACM SIGSOFT Software Engineering Notes
Generalized algorithmic debugging and testing
ACM Letters on Programming Languages and Systems (LOPLAS)
Implicit-specification errors and automatic, trace-based debugging
CSC '93 Proceedings of the 1993 ACM conference on Computer science
Intelligent Analysis and Off-Line Debugging of VLSI Device Test Programs
Journal of Electronic Testing: Theory and Applications
An analysis of patterns of debugging among novice computer science students
ITiCSE '05 Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education
Building modeling tools that support verification, validation, and testing for the domain expert
WSC '05 Proceedings of the 37th conference on Winter simulation
Debugging: the good, the bad, and the quirky -- a qualitative analysis of novices' strategies
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Application of redundant computation in program debugging
Journal of Systems and Software
Forensic debugging of model transformations
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
Hi-index | 0.01 |
Our review is based on descriptions of 18 existing automated systems on program debugging and of a dozen cognitive studies on debugging. We propose a classification of debugging knowledge, and a description of the corresponding knowledge representation in the systems. Then we propose a classification of global debugging strategies used in the systems, and a description of the corresponding techniques. We assess the identified strategies from a real world program development point of view.The knowledge types we have identified are 1) knowledge of the intended program, 2) knowledge of the actual program, 3) understanding of the programming language, 4) general programming expertise, 5) knowledge of the application domain, 6) knowledge of bugs, 7) knowledge on debugging methods.The strategies we have identified are 1) filtering, 2) checking computational equivalence of intended program and actual one, 3) checking the well-formedness of actual program and 4) recognizing stereotyped errors.