Abstract Debuggers: Exploring Program Behaviors using Static Analysis Results

Traditional, or concrete, debuggers allow developers to step through programs and explore the corresponding concrete program states—developers can query current values of program variables. This exploration enables developers to formulate and refine hypotheses about program behaviors. We propose the novel notion of abstract debuggers, which allow developers to explore abstract program states, as computed by sound static analyzers. Giving developers the ability to interactively explore abstract states empowers them to work with hypotheses that are true for all program executions: they can examine and rule out false positives, or better understand a static analysis’s declaration that some code is indeed safe. Abstract debuggers’ interfaces, reminiscent of conventional debuggers, aim to make navigating and interpreting static analysis results more straightforward. We have formalized the concept, applied it by implementing a tool that leverages the static analyzer Goblint, and illustrate its usefulness through case studies.

Authors

Institutions

Publication Details

Published
2024-10-17
DOI
https://doi.org/10.1145/3689492.3690053
Citations
2
Primary Topic
Formal Methods in Verification
Type
article
Field-Weighted Citation Impact
0.72
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Abstract Debuggers: Exploring Program Behaviors using Static Analysis Results

Simmo Saan, Patrick Lam, Vesal Vojdani, Karoliine Holter et al.
2 citations
Formal Methods in Verification
0.72
article

Abstract Debuggers: Exploring Program Behaviors using Static Analysis Results

Simmo Saan, Patrick Lam, Vesal Vojdani, Karoliine Holter, Juhan Oskar Hennoste
article en
2 citations

Abstract

Traditional, or concrete, debuggers allow developers to step through programs and explore the corresponding concrete program states—developers can query current values of program variables. This exploration enables developers to formulate and refine hypotheses about program behaviors. We propose the novel notion of abstract debuggers, which allow developers to explore abstract program states, as computed by sound static analyzers. Giving developers the ability to interactively explore abstract states empowers them to work with hypotheses that are true for all program executions: they can examine and rule out false positives, or better understand a static analysis’s declaration that some code is indeed safe. Abstract debuggers’ interfaces, reminiscent of conventional debuggers, aim to make navigating and interpreting static analysis results more straightforward. We have formalized the concept, applied it by implementing a tool that leverages the static analyzer Goblint, and illustrate its usefulness through case studies.

University of Waterloo (CA), University of Tartu (EE)
Openalex Percentile: Top 25%
Formal Methods in Verification
0.72
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Abstract Debuggers: Exploring Program Behaviors using Static Analysis Results — Simmo Saan, Patrick Lam, et al. · (2024) | TGRS Research Map | TGRS