gcc: "-g"和"-ggdb"有什么区别?

5

我正在使用Linux,对于“-g”和“-ggdb”的效果似乎没有太大区别。我只发现使用“-ggdb”会生成几个字节更大的二进制文件。

那么,gdb应该使用一个“-g”选项和另一个“-ggdb”选项有什么核心区别呢?


可能是What is the difference between gcc -ggdb and gcc -g的重复问题。 - kgbook
2个回答

5
编译后的程序应该存储在某个位置,以便调试器(这里是GDB)查看并跟踪。
这在技术上被称为“调试数据格式”。
一些普遍接受的调试数据格式有(还有其他一些):
COFF - 通用对象文件格式 - 在类UNIX系统上使用。
PE/COFF - 可移植可执行文件 - 在Windows上非常著名,通常用于.NET。
DWARF - 在类UNIX系统上很受欢迎。
等等。
你在问题中提到的GDB选项与生成这些调试数据格式有关。
根据文档,基本区别是: 选项“g”以特定系统的本地格式提供调试数据。 选项“-ggdb”比较丰富和昂贵。以最可表达的格式提供调试数据。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接