一句话:揭示现代工具链优化阶段未能正确保留调试信息的问题,及其对部署后调试的阻碍。
尽管软件测试不断进步,已部署软件仍会因缺陷而崩溃。调试时,尤其面对“heisenbugs”,需要解释 core dump 并在同一部署二进制上离线复现问题。这要求编译器、链接器和调试器组成的整个工具链正确生成并使用调试信息。然而,现代工具链优化阶段是否正确保留调试信息长期缺乏检查。本文关注这一空白,旨在暴露优化二进制中的调试信息缺陷:在生产二进制中管理调试信息并非易事,常导致工具链缺陷,从而妨碍部署后的调试工作。摘要未披露具体方法与实验数据。
Despite the advancements in software testing, bugs still plague deployed software and result in crashes in production. When debugging issues —sometimes caused by “heisenbugs”— there is the need to interpret core dumps and reproduce the issue offline on the same binary deployed. This requires the entire toolchain (compiler, linker, debugger) to correctly generate and use debug information. Little attention has been devoted to checking that such information is correctly preserved by modern toolchains’ optimization stages. This is particularly important as managing debug information in optimized production binaries is non-trivial, often leading to toolchain bugs that may hinder post-deployment debugging efforts.
@inproceedings{paperbot6099,
title = {Who’s debugging the debuggers? exposing debug information bugs in optimized binaries},
author = {Giuseppe Antonio Di Luna and Davide Italiano and Luca Massarelli and Sebastian Österlund and Cristiano Giuffrida and Leonardo Querzoni},
booktitle = {ASPLOS},
year = {2021},
doi = {10.1145/3445814.3446695}
}