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
的文档,它首先出现在本节中。