Accurate Coverage Metrics for Compiler-Generated Debugging Information (2402.04811v1)
Abstract: Many debugging tools rely on compiler-produced metadata to present a source-language view of program states, such as variable values and source line numbers. While this tends to work for unoptimised programs, current compilers often generate only partial debugging information in optimised programs. Current approaches for measuring the extent of coverage of local variables are based on crude assumptions (for example, assuming variables could cover their whole parent scope) and are not comparable from one compilation to another. In this work, we propose some new metrics, computable by our tools, which could serve as motivation for language implementations to improve debugging quality.
- Where Did My Variable Go? Poking Holes in Incomplete Debug Information. In Proc. of ASPLOS ’23. https://doi.org/10.1145/3575693.3575720
- Kristina Bessonova. 2019. [llvm-dwarfdump][Statistics] Unify Coverage Statistic Computation. https://reviews.llvm.org/D70548
- Debugging Optimized Code: Concepts and Implementation on DIGITAL Alpha Systems. Digital Technical Journal 10, 1 (1998), 81–99.
- A New Approach to Debugging Optimized Code. In Proc. of PLDI ’92. https://doi.org/10.1145/143095.143108
- DOC: A Practical Approach to Source-Level Debugging of Globally Optimized Code. In Proc. of PLDI ’88. https://doi.org/10.1145/53990.54003
- Daniele Cono D’Elia and Camil Demetrescu. 2018. On-Stack Replacement, Distilled. In Proc. of PLDI ’18. https://doi.org/10.1145/3192366.3192396
- Who’s Debugging the Debuggers? Exposing Debug Information Bugs in Optimized Binaries. In Proc. of ASPLOS ’21. https://doi.org/10.1145/3445814.3446695
- DWARF Debugging Information Format Committee. 2017. DWARF Debugging Information Format: Version 5. https://dwarfstd.org/doc/DWARF5.pdf
- Frank Ch. Eigler. 2006. Problem Solving With SystemTap. In Proceedings of the Linux Symposium (Ottawa, Canada).
- Shu-Yu Guo. 2014. Debugging in the Time of JITs. https://rfrn.org/~shu/2014/05/14/debugging-in-the-time-of-jits.html
- John Hennessy. 1982. Symbolic Debugging of Optimized Code. TOPLAS 4, 3 (July 1982), 323–344. https://doi.org/10.1145/357172.357173
- Debugging Optimized Code with Dynamic Deoptimization. In Proc. of PLDI ’92. https://doi.org/10.1145/143095.143114
- Jakub Jelínek. 2010. Improving Debug Info for Optimized Away Parameters. In GCC Summit. https://gcc.gnu.org/wiki/summit2010?action=AttachFile&do=view&target=jelinek.pdf
- Peter B. Kessler. 1990. Fast Breakpoints: Design and Implementation. In Proc. of PLDI ’90. https://doi.org/10.1145/93542.93555
- Xavier Leroy. 2009. Formal Verification of a Realistic Compiler. Commun. ACM 52, 7 (July 2009), 107–115. https://doi.org/10.1145/1538788.1538814
- Debug Information Validation for Optimized Code. In Proc. of PLDI ’20. https://doi.org/10.1145/3385412.3386020
- Stephen Livermore-Tozer. 2023. [RFC] Redefine Og/O1 and Add a New Level of Og. https://discourse.llvm.org/t/rfc-redefine-og-o1-and-add-a-new-level-of-og/72850
- LLVM Project. 2020. llvm-dwarfdump - Dump and Verify DWARF Debug Information. https://llvm.org/docs/CommandGuide/llvm-dwarfdump.html
- LLVM Project. 2022. Source Level Debugging with LLVM. https://llvm.org/docs/SourceLevelDebugging.html
- Alive2: Bounded Translation Validation for LLVM. In Proc. of PLDI ’21. https://doi.org/10.1145/3453483.3454030
- George C. Necula. 2000. Translation Validation for an Optimizing Compiler. In Proc. of PLDI ’00. https://doi.org/10.1145/349299.349314
- Nicholas Nethercote and Julian Seward. 2007. Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation. In Proc. of PLDI ’08. https://doi.org/10.1145/1250734.1250746
- Robert O’Callahan. 2018. Comparing the Quality of Debug Information Produced by Clang and GCC. https://robert.ocallahan.org/2018/11/comparing-quality-of-debug-information.html
- Engineering Record and Replay for Deployability. In Proc. of USENIX ATC ’17. https://www.usenix.org/conference/atc17/technical-sessions/presentation/ocallahan
- Alexandre Oliva. 2010. Consistent Views at Recommended Breakpoints. In Proc. of GCC Summit. 6. https://www.fsfla.org/~lxoliva/papers/sfn/gcc2010.pdf
- Alexandre Oliva. 2017a. Location View Numbering. https://dwarfstd.org/ShowIssue.php?issue=170427.1
- Alexandre Oliva. 2017b. Statement Frontier Notes and Location Views. https://developers.redhat.com/blog/2017/07/11/statement-frontier-notes-and-location-views
- Alexandre Oliva. 2019. GCC gOlogy: Studying the Impact of Optimizations on Debugging. https://www.fsfla.org/~lxoliva/writeups/gOlogy/gOlogy.html
- J. Ryan Stinnett and Stephen Kell. 2024. Accurate Coverage Metrics for Compiler-Generated Debugging Information (artifact). https://doi.org/10.5281/zenodo.10568392
- Caroline Tice and Susan L. Graham. 1998. OPTVIEW: A New Approach for Examining Optimized Code. In Proc. of PASTE ’98. https://doi.org/10.1145/277631.277636
- Finding and Understanding Bugs in C Compilers. In Proc. of PLDI ’11. https://doi.org/10.1145/1993498.1993532
- Polle T. Zellweger. 1983. An Interactive High-Level Debugger for Control-Flow Optimized Programs. In Proc. of SIGSOFT ’83. https://doi.org/10.1145/1006147.1006183
- Polle T. Zellweger. 1984. Interactive Source-Level Debugging of Optimized Programs. Ph. D. Dissertation. University of California, Berkeley. https://search.library.berkeley.edu/permalink/01UCS_BER/1thfj9n/alma991002570669706532
- Lawrence W Zurawski and Ralph E Johnson. 1991. Debugging Optimized Code with Expected Behavior. Unpublished draft.
Paper Prompts
Sign up for free to create and run prompts on this paper using GPT-5.
Top Community Prompts
Collections
Sign up for free to add this paper to one or more collections.