An Event-Based Language for Programmable Debugging
Serguei Makarov · TSpace (University of Toronto) · 2018
Conventional debuggers do not provide an efficient means to perform complex observations. This has motivated the development of tools for programmable debugging. Heavyweight instrumentation frameworks such as Valgrind and DynamoRIO can perform a wide variety of observations, but development of plugins for these frameworks is a difficult and low-level task. The event-based approach introduced in the DTrace and SystemTap languages allows observations to be expressed compactly, but these languages lack the flexibility to observe combinations of events required for debugging. This thesis introduces E, an event-based language for debugging complex software problems, designed around a high-level model of the state transitions and events within a program’s execution. E provides a simple and expressive means for programming heavyweight instrumentation plugins. The thesis presents an E implementation based on heavyweight instrumentation frameworks and demonstrates how E can simplify the diagnosis process for complex real-world debugging scenarios.