在 linux Azure 上安装调试符号包

调试符号 (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_64aarch64

版本、阶段和体系结构必须与将加载符号的系统匹配。 不匹配的 debuginfo 包无法正确解析符号。

debuginfo启用存储库

  1. 使用以下命令安装 config-manager 插件:

    sudo dnf install 'dnf5-command(config-manager)'
    
  2. 若要安装 debuginfo 包,请将 DNF 配置为从适用于你的发行版本和体系结构的 Azure Linux debuginfo 存储库读取:

    sudo dnf config-manager setopt azurelinux-base-debuginfo.enabled=1
    
  3. debuginfo使用以下命令确认存储库已启用:

    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 管理概述