Cross-Level Debugging for Static AnalysersResearch Paper
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 OctDisplayed 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 30mTalk | 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 30mTalk | 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 30mTalk | Cascade: a Meta-Language for Change, Cause and EffectResearch Paper SLE Riemer van Rozen CWI DOI |