Debugging is a laborious, manual activity that often involves the repetition of common operations. Ideally, users should be able to describe these repetitious operations as little programs. Debuggers should therefore be programmable, or scriptable. The operating environment of these scripts, however, imposes interesting design challenges on the programming language in which these scripts are written. This paper presents our design of a language for scripting debuggers. The language offers powerful primitives that can precisely and concisely capture many important debugging and comprehension metaphors. The paper also describes a pair of debuggers, one for Java and the other for Scheme, built in accordance with these principles. The paper includes concrete examples of applying this debugger to programs.
Now that functional reactive programming is taking flight for web development, with the Rx frameworks and especially with vue.js, it is fun to go back to its establishing years. In this paper, we help broaden the range of applicability of FRP. It started as a technique for simulating electronics signals, then for coding user interface, and now a technique for responding to events broadly, including those that occur when doing system programming.