dpDebugger: a Domain-parametric Debugger for DSLs using DAP and Language Protocols
Interactive debuggers are established tools used by developers to understand programs and localize faults. They are equally valuable in the context of model-driven development, when working on executable behavioral However, development costs of interactive debuggers for Domain-Specific Languages (DSLs) can be significant. In order to mitigate these costs, several reusable DSL-agnostic debugging solutions have been proposed. We argue that the applicability of these solutions is limited by being tied to a fixed set of debugging services, a specific language engineering approach, or a particular user In this paper, we present dpDebugger, a domain-parametric debugger capable of controlling the execution of a program and providing domain-specific debugging operations (such as breakpoints and steps) for heterogeneous DSL runtimes. The debugger relies on a language protocol to communicate with and be configured by heterogeneous DSL runtimes, while also enabling the debugging of DSLs with non-deterministic execution semantics. The proposed debugger can itself be controlled using a reinterpretation of the Debug Adapter Protocol (DAP), for an effortless integration in existing Integrated Development Environments (IDEs) that support it.