如何安装包含 Ubuntu 内核调试符号的软件包?

dai*_*isy 20 kernel software-installation

默认的 Ubuntu 内核-generic包中似乎没有符号。

我试图避免手动编译带有调试信息的内核。

Ubuntu 是否提供带有内核调试符号的包?

Col*_*ing 25

  1. 首先创建一个ddebs.list使用:

    echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ddebs.list
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后添加 GPG 密钥ddebs.ubuntu.com

    wget -O - http://ddebs.ubuntu.com/dbgsym-release-key.asc | sudo apt-key add -
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后运行:

    sudo apt-get update
    
    Run Code Online (Sandbox Code Playgroud)
  4. 然后使用以下命令安装符号包:

    sudo apt-get install linux-image-`uname -r`-dbgsym
    
    Run Code Online (Sandbox Code Playgroud)

    这是相当大的(> 680MB),所以下载它时请准备等待。

我将 Linux 内核调试符号用于systemtap内核等工具。

  • `sudo apt-get install linux-image-$(uname -r)-dbgsym=3.13.0-49.83 读取软件包列表...完成 构建依赖关系树 读取状态信息...完成 E: 无法找到软件包 linux-image -3.13.0-49-generic-dbgsym E:无法通过正则表达式'linux-image-3.13.0-49-generic-dbgsym'找到任何包` (4认同)
  • @warl0ck 是的,`-dbgsym` 软件包位于您必须启用的特殊存储库中才能安装它们。[这解释了如何](https://wiki.ubuntu.com/DebuggingProgramCrash#Debug_Symbol_Packages)。 (3认同)

小智 8

对于 16.04+

GPG 密钥导入

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C8CAB6595FDFF622 
Run Code Online (Sandbox Code Playgroud)

添加存储库配置

codename=$(lsb_release -c | awk  '{print $2}')
sudo tee /etc/apt/sources.list.d/ddebs.list << EOF
deb http://ddebs.ubuntu.com/ ${codename}      main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-security main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-updates  main restricted universe multiverse
deb http://ddebs.ubuntu.com/ ${codename}-proposed main restricted universe multiverse
EOF

sudo apt-get update
sudo apt-get install linux-image-$(uname -r)-dbgsym
Run Code Online (Sandbox Code Playgroud)

(归功于Ubuntu Wiki


小智 7

我尝试了Colin Ian King的回答,但它对我不起作用。我发现我必须在其中添加两行额外的行/etc/apt/sources.list.d/ddebs.list

通过编辑文件

sudo nano /etc/apt/sources.list.d/ddebs.list
Run Code Online (Sandbox Code Playgroud)

并添加下面的两行

deb http://ddebs.ubuntu.com trusty-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com trusty-proposed main restricted universe multiverse
Run Code Online (Sandbox Code Playgroud)

替换trusty为您执行时获得的版本

lsb_release -cs
Run Code Online (Sandbox Code Playgroud)