如何找到获取符号堆栈跟踪所需的 dbgsym 包?

如何找到获取符号堆栈跟踪所需的 dbgsym 包?

我在 Debian 系统上有一个核心文件。我想获取从该核心转储生成符号堆栈跟踪所需的所有调试符号包的完整列表。

我可以通过什么方式生成这样的列表?

答案1

readelf -Wa将提供有关核心转储的详细信息,包括映射文件(查找NT_FILE)。您应该为任何二进制文件或库文件安装调试符号。要查找相关软件包,请安装(apt-file如果尚未安装),运行sudo apt update以更新其索引,然后运行

apt-file search /path/to/file

例如,如果/usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.7.1显示在给定核心转储的映射文件列表中,

$ apt-file search /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.7.1
libpcre2-8-0: /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.7.1

通过扩展,这告诉您需要安装libpcre2-8-0-dbgsym才能具有相应的调试符号。

(是的,这比应有的要麻烦一些。其他发行版使这变得更简单......)

答案2

从 Debian 开始buster,您可以使用find-dbgsym-packages来自debian-goodies包裹。

查找 dbgsym 包列出正确调试由可执行文件、库、核心转储或 PID 号列表给出的进程所需的所有 *-dbgsym 包。

相关内容