Treffer: A Survey of Intelligent Debugging
Weitere Informationen
this paper is to examine recent and current debugging approaches that promise to have the potential of going a step further along the road towards automatic program debugging. Traditionally, automated debuggers in the literature have been classified according to a large variety of criteria. For example, Shamehri et.al. [31] use the timing (but interestingly, not the amount) of user interaction, the kind of additional inputs required by the debugger (intended I/O behavior, intended implementation, intended program behavior), generality (i.e., limitations to programming style or bug types), and dependency on the degree of user expertise (i.e., whether the system is intended for expert or novice programmers). The last criterion is mirrored in [14], where a distinction is made between tutoring (for novices) and diagnosis systems (for experienced programmers). The latter work also groups systems according to basic strategies, namely verification with respect to a formal specification, checking based on explicit knowledge about a particular programming language, and filtering, i.e., the exclusion of program parts that cannot be responsible for a misbehavior. Thirteen special techniques are identified as being used in the systems reviewed, and grouped according to the three strategies. The only approach listed in these two surveys that was picked up by multiple researchers was Shapiro's Algorithmic Debugging [30], originally specified in a Logic Programming context, which was refined in various directions and also experimentally extended to other languages (also known in the logic programming literature as Declarative Debugging or Declarative Diagnosis [25]). Using a fundamentally different approach to software debugging, Burnell et al. [2, 3] introduce a system that uses fa.