总长DR

总长DR

在为基于 Debian 的 Linux 系统下载 MySQL Workbench 时,我遇到了两个软件包。第一个被调用mysql-workbench-community_8.0.30-1ubuntu22.04_amd64.deb,而第二个被调用mysql-workbench-community-dbgsym_8.0.30-1ubuntu22.04_amd64.deb,后者的大小更大:

在此输入图像描述

这两个包有什么区别?我应该使用哪一个?

答案1

dbgsym包包含调试符号。

总长DR

忽略 dbgsym 包

细节

如果您的程序(在本例中为 mysql)是用 C、C++、Go、Rust 等编译语言编写的,并转换为可执行文件,则调试信息允许将一定数量的引用位置和值从可执行文件返回到原始文件源代码。

例如,可以说字节 300 到 312 和 340 到 356 来自文件 src/main.c 的第 127 行。

当程序计数器在 500 到 512 之间时,也可以说变量 foo 存储在寄存器 %r12 中。

如果程序崩溃,可能是由于除以零,那么能够说您正在执行特定的源代码行并使用特定的变量可以使修复变得更加简单。

然而所有这些信息都占用空间。由于大多数人不想调试诸如 mysql 之类的程序,因此发行版经常将调试信息拆分到一个附加包中,这样不感兴趣的人就不必支付下载和存储它的费用。

答案2

dbgsym代表 ”DeG SYMbols。”Unix 文化倾向于将文件名缩减到绝对最小值。

它所包含的只是 - 如果应用程序遇到严重错误,调试器需要从核心转储中找出意义的符号表,将指针地址转换为(大概)可读的函数名称。

编译的标准过程是从最终产品中删除符号名称,因为它节省了一大块空间。

长话短说如果您不知道这个包是什么,您很可能不需要它。

相关内容