A Very High Level Debugging Language (thesis)
Report ID: TR-438-93Author: Golan, Michael
Date: 1994-01-00
Pages: 107
Download Formats: |Postscript|
Abstract:
Programmers spend a significant part of their time debugging, yet most of them simply add print statements and avoid debugging tools. Although the user interface of debuggers has improved significantly in the past decade, their basic debugging methodologies have changed little. This thesis examines single-process sequential debuggers and attempts to elucidate their weaknesses. Target-state exploration and conditional program execution are essential idioms that cannot be practiced effectively with existing debuggers. State exploration seeks answers to queries such as detecting a linked list containing a negative element and finding where that element was added. Previous work has focussed on the use of source-language interpreters and graphical interactive exploration as solutions to the state-exploration problem, but these cannot effectively search for a negative element in a linked list, specify a search for it, etc. This thesis describes {it Duel,/} a very high-level language designed specifically for state exploration in a debugger. {it Duel/} allows complex state queries to be expressed succinctly and it produces meaningful output. The traditional C operators are extended to process sequences of values, and special operators manipulate these sequences in novel ways. Over a hundred programmers have used {it Duel/} and their experience substantiates the importance of state exploration and of the inadequacies in previous approaches. Conditional execution that detects state changes in complex data structures is at the crux of advanced debugging, and it is useful to specify such conditions in {it Duel./} Such use of {it Duel/} raises important semantic and implementation problems. These problems, possible solutions, and {it Duel/}extensions are discussed.