如何获得优化的、未剥离的 libc 和 vmlinuz 版本?

如何获得优化的、未剥离的 libc 和 vmlinuz 版本?

一个常见的任务是对事物进行分析。很少在调试版本上进行分析。Ubuntu 似乎要么为您提供剥离优化的可执行文件或调试版本的选择。我在 libc 和 vmlinux-... 上都遇到了这个问题,我从 vmlinuz 中提取了它们。提取后,我发现它已被剥离。

我是否必须构建自己的系统库才能获取符号?符号真的会占用那么多内存或磁盘吗?完整调试版本 lib libc 仅为 7.6MB,并在所有正在运行的进程中共享!优化版本,带有符号应该同样小。为什么要删除这些?

我需要什么 apt-get 来让 libc 和 vmlinuz 获得优化的非剥离版本?

答案1

根据政策,Ubuntu 在构建所有程序时都启用了调试符号,然后我们从二进制包中删除这些符号。对于几乎所有用户来说,这些符号都是浪费的空间,对于某些程序来说,这可能会浪费大量空间和下载时间。例如,Firefox 和 LibreOffice 有近 1 GB 的调试符号,您会注意到内核调试符号有数百兆字节。

对于需要这些符号的少数人来说——当你需要它们时,你真的需要它们 - 我们从二进制包中取出所有调试符号,并将它们粘贴到-dbgsym包中。参见调试程序崩溃了解如何获取 dbgsym 存储库。

有些软件包没有-dbgsym软件包。大多数情况下,这些软件包已经有一个-dbg软件包,或者在构建时没有任何调试符号 - 要么是因为它们实际上没有任何可执行代码,要么(有时)因为构建错误。

答案2

调试符号通常被放在一个单独的包中,可以与实际包一起安装。它们通常在末尾附加一个 -dbg。

例如,包 mythtv 被命名为

mythtv

调试符号位于

mythtv-dbg

因此,你需要安装这两个软件包才能调试 MythTV

相关内容