,
Maarten Steevens
,
Christophe Scholliers
Creative Commons Attribution 4.0 International license
Traditional debugging makes it practically impossible to manually explore all execution paths, often leaving hypotheses insufficiently explored. Abstract debugging addresses this problem by safely over-approximating all program behaviours through a familiar stepping interface. However, existing approaches operate offline, pre-computing fixed loop summaries that developers cannot interactively refine or inspect at the individual iteration level. In this paper, we propose online abstract debugging, which performs abstract interpretation on demand as the developer steps through the program. This novel architecture enables loop stepping: developers can step into a loop body for precise, iteration-specific states, or step-over to obtain a coarser summary. By interleaving analysis with execution, developers gain direct control over the cost-precision trade-off, computing high precision only where needed to settle a hypothesis. We instantiate this model for WebAssembly and present a prototype implementation, demonstrating that developers can effectively draw sound conclusions about complex, potentially non-terminating looping programs.
@InProceedings{alvim_et_al:OASIcs.SLATE.2026.20,
author = {Alvim, Jo\~{a}o and Steevens, Maarten and Scholliers, Christophe},
title = {{Out of the Loop No More: Online Abstract Debugging with Loop Stepping}},
booktitle = {15th Symposium on Languages, Applications and Technologies (SLATE 2026)},
pages = {20:1--20:10},
series = {Open Access Series in Informatics (OASIcs)},
ISBN = {978-3-95977-440-6},
ISSN = {2190-6807},
year = {2026},
volume = {144},
editor = {Batista, Fernando and Ribeiro, Eug\'{e}nio and Ribeiro, Ricardo and Santos, Andr\'{e} L.},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/OASIcs.SLATE.2026.20},
URN = {urn:nbn:de:0030-drops-267180},
doi = {10.4230/OASIcs.SLATE.2026.20},
annote = {Keywords: Debugging, Abstract Interpretation}
}