Debian:通过 build-id 查找二进制文件和调试文件

Debian:通过 build-id 查找二进制文件和调试文件

假设我有一个来自 Debian 系统的核心转储,我知道转储中使用的库的构建 ID,但不知道确切的版本,有没有办法找到这些文件?

例如,该命令eu-unstrip -n --core my-core-file为我提供了来自核心转储的构建 ID 列表,如下所示:

0x7f09b7228000+0x2721081b72306ef00166fe1511d57140b50f5ce341170e@0x7f09b72281d8 /lib/x86_64-linux-gnu/libpcre.so.3 -libpcre.so.3

0x7f09bac07000+0x219208908b5a955d0a73fb8d31e0f927d0cdba810cb300@0x7f09bac071d8 /lib/x86_64-linux-gnu/libz.so.1 -libz.so.1

0x7f09bb06c000+0x20fd8806ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1@0x7f09bb06c1d8 /lib/x86_64-linux-gnu/libbz2.so.1.0 -libbz2.so.1.0

根据这些库名称和构建 ID,是否有命令、Web 服务或其他任何内容可以告诉我这些构建 ID 对应于哪些包或文件版本,以便我可以下载它们?

答案1

据我所知没有工具搜索 build-ids(但请参阅下文)。

您可以用来apt-file搜索提供正在使用的库的包。安装它,更新索引,然后运行

apt-file search /lib/x86_64-linux-gnu/libpcre.so.3
apt-file search /lib/x86_64-linux-gnu/libz.so.1
apt-file search /lib/x86_64-linux-gnu/libbz2.so.1.0

要使用 build-ids,您需要Packages手动查看文件。调试存储库的索引包括 build-ids;例如

$ apt show libbz2-1.0-dbgsym
Package: libbz2-1.0-dbgsym
Version: 1.0.6-8.1
Auto-Built-Package: debug-symbols
Priority: extra
Section: debug
Source: bzip2
Maintainer: Anibal Monsalve Salazar <[email protected]>
Installed-Size: 68.6 kB
Depends: libbz2-1.0 (= 1.0.6-8.1)
Homepage: http://www.bzip.org/
Build-Ids: 06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1
Download-Size: 51.5 kB
APT-Sources: http://debug.mirrors.debian.org/debian-debug stretch-debug/main amd64 Packages
Description: Debug symbols for libbz2-1.0

要直接搜索 build-ids,grep请通过/var/lib/apt/*Packages

grep -l 06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1 /var/lib/apt/lists/*Packages

您可以将其结合起来less查看包的名称和版本:

grep -l 06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1 /var/lib/apt/lists/*Packages | xargs -r less -p06ea95ca3df11e4a8e85791c1ff89a49fc3fe9c1

仅当您有调试包的索引时,这才有效;要获得这些,请将文件添加到/etc/apt/sources.list.d,例如调用它debug.sources,包含

Types: deb
URIs: http://debug.mirrors.debian.org/debian-debug/
Suites: stretch-debug testing-debug unstable-debug experimental-debug
Components: main

这将下载稳定版、测试版、不稳定版和实验版主要组件的调试索引。

某些包(例如libpcre3)不构建-dbgsym包,因此上面的搜索不包括它们。有一个相应的版本libpcre3-dbg,但据我所知,当前存档中没有一个版本与您的 build-id 匹配。

相关内容