调试符号 (debuginfo) RPM 包含调试器和探查器的符号表,例如 gdb,用于解析函数名称和源行的地址。 Azure Linux 会与大多数二进制包一起发布 debuginfo 包,但默认情况下未启用 debuginfo 存储库。 这可以避免将大型符号包拉取到生产系统中,除非你明确选择启用。
本文介绍Azure Linux 在何处发布 debuginfo 包、如何启用 debuginfo 存储库,以及如何在需要它们的系统上安装符号包。
Note
Azure Linux 4.0 现在位于 preview 中,严格限制为评估和测试目的。 它不适合生产用途。
先决条件
- 可以使用 shell 访问进行身份验证的 Azure Linux 系统。
- 具有
sudo权限的用户账户,这是在.repo下写入/etc/yum.repos.d/文件并安装软件包所必需的。
Azure Linux 发布 debuginfo 包的位置
Azure Linux 将 debuginfo RPM 发布到 packages.microsoft.com (PMC) 中的专用位置,并按发布版本、发布阶段和架构进行组织。 对于 Azure Linux 4.0,布局为:
https://packages.microsoft.com/azurelinux/4.0/<STAGE>/base/debuginfo/<ARCH>/
-
<STAGE>是适用于 Azure Linux 预览版中的软件包的beta。 -
<ARCH>是目标体系结构,例如x86_64或aarch64。
版本、阶段和体系结构必须与将加载符号的系统匹配。 不匹配的 debuginfo 包无法正确解析符号。
debuginfo启用存储库
使用以下命令安装 config-manager 插件:
sudo dnf install 'dnf5-command(config-manager)'若要安装
debuginfo包,请将 DNF 配置为从适用于你的发行版本和体系结构的 Azure Linuxdebuginfo存储库读取:sudo dnf config-manager setopt azurelinux-base-debuginfo.enabled=1debuginfo使用以下命令确认存储库已启用:dnf repolist输出应列出新的
debuginfo存储库以及默认的 linux 存储库Azure。
安装调试符号包
启用 debuginfo 软件仓库后,使用 dnf install 安装符号包。 调试符号包共享二进制包的名称并添加 -debuginfo 后缀。 例如,若要为 glibc 安装符号,请运行:
sudo dnf install glibc-debuginfo
若要一次性安装多个包的符号,请在命令行上列出每个 -debuginfo 包。 例如:
sudo dnf install glibc-debuginfo openssl-debuginfo
安装后,调试器和探查器会自动从 /usr/lib/debug/中选取新符号。
Tip
将 debuginfo 包版本与系统上安装的二进制包版本匹配。 版本不匹配会导致调试器回退到仅包含地址的堆栈跟踪。 在安装之前运行 dnf info <package>-debuginfo 以确认可用版本。
相关内容
若要详细了解 Azure Linux 包管理,请参阅 Azure Linux 上的 Package 管理概述。