Where Did My Variable Go? Poking Holes in Incomplete Debug Information
Cristian Assaiante, Daniele Cono D'Elia, Giuseppe Antonio Di Luna and, Leonardo Querzoni

TL;DR
This paper investigates the completeness of debug information in optimized executables, proposing conjectures and techniques to identify missing or incorrect debug data, which can mislead debugging efforts and reveal compiler defects.
Contribution
It introduces conjectures on debug information completeness and demonstrates their effectiveness in detecting compiler bugs across gcc and LLVM.
Findings
Identified 24 bugs in gcc and LLVM related to debug info completeness.
Proposed techniques to diagnose causes of debug info violations.
Empirically validated conjectures on debug information availability.
Abstract
The availability of debug information for optimized executables can largely ease crucial tasks such as crash analysis. Source-level debuggers use this information to display program state in terms of source code, allowing users to reason on it even when optimizations alter program structure extensively. A few recent endeavors have proposed effective methodologies for identifying incorrect instances of debug information, which can mislead users by presenting them with an inconsistent program state. In this work, we identify and study a related important problem: the completeness of debug information. Unlike correctness issues for which an unoptimized executable can serve as reference, we find there is no analogous oracle to deem when the cause behind an unreported part of program state is an unavoidable effect of optimization or a compiler implementation defect. In this scenario, we…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Software Reliability and Analysis Research
