SPLASH 2023
Sun 22 - Fri 27 October 2023 Cascais, Portugal
Tue 24 Oct 2023 09:30 - 10:00 at Room II - Live programming and debugging Chair(s): Vadim Zaytsev

Static analyses provide the foundation for several tools that help developers find problems before executing the program under analysis. Common applications include warning about unused code, deprecated API calls, or about potential security vulnerabilities within an IDE. A static analysis distinguishes itself from a dynamic analysis in that it is supposed to terminate even if the program under analysis does not. In many cases it is also desired for the analysis to be sound, meaning that its answers account for all possible program behavior. Unfortunately, analysis developers may make mistakes that violate these properties resulting in hard-to-find bugs in the analysis code itself. Finding these bugs can be a difficult task, especially since analysis developers have to reason about two separate code-bases: the analyzed code and the analysis implementation. The former is usually where the bug manifests itself, while the latter contains the faulty implementation. A recent survey has found that analysis developers prefer to reason about the analyzed program, indicating that debugging would be easier if debugging features such as (conditional) breakpoints and stepping were also available in the analyzed program. In this paper, we therefore propose cross-level debugging for static analysis. This novel technique moves debugging features such as stepping and breakpoints to the base-layer (i.e., analyzed program), while still making interactions with the meta-layer (i.e., analysis implementation) possible. To this end, we introduce novel conditional breakpoints that express conditions, which we call meta-predicates, about the current analysis’ state. We integrated this debugging technique in a framework for implementing modular abstract interpretation-based static analyses called MAF. Through a detailed case study on 4 real-world bugs taken from the repository of MAF, we demonstrate how cross-level debugging helps analysis developers in locating and solving bugs.

Tue 24 Oct

Displayed time zone: Lisbon change

09:00 - 10:30
Live programming and debuggingSLE at Room II
Chair(s): Vadim Zaytsev University of Twente, Netherlands
09:00
30m
Talk
Temporal Breakpoints for Multiverse DebuggingResearch Paper
SLE
Matthias Pasquier Ertosgener, Ciprian Teodorov ENSTA Bretagne, Frédéric Jouault ERIS Team, ESEO , France, Matthias Brun , Luka Le Roux Lab-STICC CNRS UMR 6285, ENSTA Bretagne, Loïc Lagadec Lab-STICC CNRS UMR 6285, ENSTA Bretagne
DOI
09:30
30m
Talk
Cross-Level Debugging for Static AnalysersResearch Paper
SLE
Mats Van Molle Vrije Universiteit Brussel, Bram Vandenbogaerde Vrije Universiteit Brussel, Coen De Roover Vrije Universiteit Brussel
DOI Pre-print
10:00
30m
Talk
Cascade: a Meta-Language for Change, Cause and EffectResearch Paper
SLE
DOI