Trace-based Debugging for Advanced-Dispatching Programming Languages

Christoph Bockisch,Marnix van 't Riet,Haihan Yin,Mehmet Aksit,Ziyi Lin,Yuting Chen,Jianjun Zhao
DOI: https://doi.org/10.1145/2843915.2843922
2015-01-01
Abstract:Advanced-dispatching programming languages allow to implicitly alter the behaviour of a program, depending on run-time program context. While this improves modularity, it also impedes comprehensibility. The use of advanced-dispatching programming languages can give rise to complex debugging scenarios, which cannot efficiently be resolved with traditional debugging approaches such as breakpoint-based debugging. Therefore, tool support for analysing the full history of runtime behaviour of advanced-dispatching programs is of importance for efficient debugging. In this paper, we characterise debugging scenarios for which existing work does not apply well, because they require access to the program execution history for efficient resolution. We present our design and implementation of a trace-based debugger for advanced-dispatching that supports such debugging scenarios efficiently. Our approach is the first one based on an XML-representation of the execution trace, giving rise to using very powerful standard tools such as the XQuery language for searching and navigating the trace, or scalable visualisations such as tree-maps.
What problem does this paper attempt to address?