Write a Blog >>
Sun 22 - Fri 27 October 2017 Vancouver, Canada

Since the multicore revolution, software systems are more and more inherently concurrent. Debugging such concurrent software systems is still hard, but in the recent years new tools and techniques are being proposed. For such novel debugging techniques, the main question is how to make sure that the proposed techniques are sufficiently expressive. In this paper, we explore a formal foundation to provide researchers with a principled approach to identify the design space for the proposed debugging techniques and assess how complete their set of debugging features is. In particular, we describe a principled approach for defining the operational semantics of a debugger. Subsequently, we apply this technique in order to derive the operational semantics for a communicating event-loop debugger. We show that our technique scales for defining the semantics of a wide set of novel breakpoints recently proposed by systems such as REME-D and Kómpos. To the best of our knowledge, this is the first formal semantics for debugging asynchronous message passing-based concurrency models.