A Declarative Debugging Scheme.

Lee Naish · 1997

We present a very simple but flexible declarative debugging scheme. A declarative debugger can be defined in Prolog with a single clause, and relies on the definition of just two additional predicates. With suitable definitions of these predicates, the debugger can diagnose several classes of bugs in many languages. We give examples of diagnoses of wrong answers in functional, relational, and object-oriented languages as well as missing answers in relational languages and calls that are not well defined in functional languages. By using declarative semantics of programs, the debugger is able to hide complex execution mechanisms such as unification, backtracking, coroutining, parallelism, higher-order functions, lazy evaluation, message passing, and inheritance.

Read the paper · More papers on PaperTik