paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Debugging Debugging Information using Dynamic Call Trees

使用动态调用树调试调试信息
OOPSLA 10(OOPSLA1)2026匹配度 3/10 · 论文属于编译器/调试信息质量研究,虽与程序分析和开发者工具有关,但并未涉及用户核心关注的 LLM/Agentic 程序、AI 辅助静态分析、浮点程序分析或贝叶斯程序分析,因此仅边缘相关。引用 0 inbox
J. Ryan Stinnett, Stephen Kell
crossref: 2026-09-10

AI 速览

一句话:通过对比优化与未优化程序的动态调用树,系统分类调试信息缺陷并归因于编译器或格式。

调试工具依赖编译器生成的元数据来呈现源码级视图,但现代编译器在优化程序中常丢弃或破坏调试信息。已有测试方法受限于调试信息格式的临时性缺陷,且难以判断信息丢失应归咎于编译器还是格式本身。本文采用调试信息的“残留程序”(residual program)概念视角,研究调试信息在恢复源码级动态调用树方面的质量。作者对比同一程序在优化与未优化版本下恢复出的调用树,对观察到的偏差进行分类,逐类分析责任归属并给出具体修复途径,最后在更大的知名代码库集合上验证该分类。

问题
优化后的程序常丢失或损坏调试信息,而现有测试难以区分这是调试信息格式的限制还是编译器的缺陷,导致调试信息质量缺乏系统评估。
方法
采用“残留程序”视角,从优化与未优化版本中恢复源码级动态调用树并比较,建立偏差分类,逐类归因并识别具体改进方式。
评估
对同一程序的优化与未优化版本进行对比研究,并在更大规模的知名代码库集合上验证所提出的分类。
原文摘要(Abstract)

Debugging tools rely on compiler-generated metadata to present a source-language view, but current compilers often throw away or corrupt debugging information in optimised programs. Attempts to test debugging information are confounded by ad-hoc limitations of the debug info formats and a lack of clarity on whether the compiler or the format is to blame for any given loss. Adopting the “residual program” conceptual view of debug info, we conduct a study of the quality of debugging information in respect of the source-level dynamic call trees it can recover. We compare the trees recovered from optimised and unoptimised versions of the same program, producing a classification of the observed divergences. For each class, we analyse whether format or compiler is to blame and identify specific ways to address these defects. We also validate our classification across a larger collection of well-known codebases.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot3829,
  title = {Debugging Debugging Information using Dynamic Call Trees},
  author = {J. Ryan Stinnett and Stephen Kell},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {OOPSLA1},
  year = {2026},
  doi = {10.1145/3798213}
}