Debugging for Reactive Programming

Author(s): G. Salvaneschi, M. Mezini
Venue: International Conference on Software Engineering
Date: 2016


Debugging for Reactive Programming investigates some of the primary issues concerning debugging in reactive programming environments and proposes a methodology for debugging reactive programs called RP Debugging. It starts by describing reactive programming and how traditional debuggers are inherently not sufficient to debug reactive programs. Reactive programming is declarative and the execution flow is implicit and data driven through the use of an underlying dependency graph. Because reactive programming doesn't explicitly update signal variables, traditional imperative debuggers cannot since these changes. Further, due to a lack of abstractions and a mismatch in the mental model of reactive programming compared to traditional programming, traditional debuggers are not equipped to debug reactive programs.

The authors propose a debugger that is, among other things, capable of stepping through the underlying dependency graph in reactive programs, supports back-in-time debugging, reports memory and time leaks, that can inspect the performance of an application on a per node basis, and able to interpret and display missing dependencies. The authors also propose a debugger that can be used as a software comprehension tool as well as a bug tracking tool.