c-对于gcc和clang,-g与-g2相同吗



GCC调试选项文档并没有那么全面。因此,尝试编译具有不同选项-g-g1-g2-g3的二进制文件,得到了以下结果。

使用-g-g2编译时,二进制文件的13KB大小相同。

当使用-g1编译时,二进制文件最终以大小的9.3KB结束

当使用-g3编译时,二进制文件具有大小的73KB

那么-g等同于-g2吗?但是,文档中甚至没有解释级别2。以下是文档所说的(没有级别2(:

级别0根本不生成调试信息。因此,-g0否定-g。

级别1生成的信息最少,足以在中进行回溯程序中不打算调试的部分。这包括函数和外部变量的描述,以及行号表,但没有关于局部变量的信息。

级别3包括额外信息,例如所有宏定义出现在节目中。当您使用-g3。

或者我遗漏了什么?

那么-g等价于-g2吗?

是。

但文档中甚至没有解释级别2。[…]还是我错过了什么?

您缺少了一些东西。您忽略了报价前的句子:

默认级别为2。

这意味着-g2-g的含义相同。(-ggdb2的含义与-ggdb相同。(这在一定程度上是每个-g*2选项对相应未编号-g*选项的文档的参考,您可以在其中找到相关文档。特别是,-g2的文档就是-g的文档,它首先出现在本节中。

最新更新