计划下月发布的 Ubuntu 22.10 将添加一项重要变化:集成 Debuginfod。
Debuginfod 支持通过 Binutils 的 readelf 和 objdump 工具或 GNU 调试器 (GDB) 本身自动查询远程 HTTP 服务器,以获取调试资源。debuginfod 服务器能够根据需要向客户端提供 ELF/DWARF 调试文件。
Red Hat 一直在负责构建 debuginfod 的生态——因为其工程师最早开发了 debuginfod,并从 Fedora 35 开始默认使用 debuginfod,以便能够从集中式服务器上为项目获取调试信息 / 资源,从而减少手动安装相关调试包的麻烦,同时也减少了对额外磁盘空间的占用。Arch Linux 也在几个月前启动了他们的 debuginfod 服务器。
Debuginfod 早在两年前就已被引入 GNU Binutils,并得到了 GNU 调试器和其他工具链组件的支持。Debuginfod 获得了不少开发者的青睐,因为它可以透明地按需获取必要的调试数据和源代码,而不是处理混乱的调试包。
虽然 debuginfod 最初只专注于支持 GNU 工具链,但 LLVM 今年也添加了对 debuginfod 服务器的支持。
Ubuntu 上游 Debian 去年推出了他们的 debuginfod 服务器。在 Ubuntu 22.10 中,Canonical 也开始集成 Debuginfod,开发者无需在手动安装 debuginfo 软件包的替代品。Ubuntu 的 debuginfod 服务器目前正在提供 DWARF 信息,而未来也计划添加索引和源代码。在 Ubuntu 22.10 及更高版本中,当安装 GDB 之类的软件时,将提示用户是否使用 debuginfod——或者可以通过重新配置 libdebuginfo-common 包来更改。
点此查看关于 Ubuntu 22.10 集成 debuginfod 的更多讨论。