我正在使用Linux,对于“-g”和“-ggdb”的效果似乎没有太大区别。我只发现使用“-ggdb”会生成几个字节更大的二进制文件。 那么,gdb应该使用一个“-g”选项和另一个“-ggdb”选项有什么核心区别呢?
编译后的程序应该存储在某个位置,以便调试器(这里是GDB)查看并跟踪。这在技术上被称为“调试数据格式”。一些普遍接受的调试数据格式有(还有其他一些):COFF - 通用对象文件格式 - 在类UNIX系统上使用。PE/COFF - 可移植可执行文件 - 在Windows上非常著名,通常用于.NET。DWARF - 在类UNIX系统上很受欢迎。等等。你在问题中提到的GDB选项与生成这些调试数据格式有关。根据文档,基本区别是: 选项“g”以特定系统的本地格式提供调试数据。 选项“-ggdb”比较丰富和昂贵。以最可表达的格式提供调试数据。