我在Linux下工作,在我看来,“-g”和“-ggdb”的效果没有太大区别。我只发现使用“-ggdb”将生成比大几个字节的二进制文件。

那么gdb应该有一个“-g”选项和另一个“-ggdb”选项的核心区别是什么?

谢谢。

最佳答案

编译后的程序应存储在某个地方,以供调试器(此处为GDB)研究并跟踪。

这在技术上称为“调试数据格式”

一些普遍接受的调试数据格式是(还有更多):

COFF-通用目标文件格式-在UNIX之类的系统上。

PE/COFF-便携式可执行文件-在Windows上很出名,通常是dotnet使用它。

DWARF-在UNIX之类的系统上流行。

等等..

您在问题中询问的GDB选项与生成这些调试数据格式有关。

根据文档编制,其基本区别是:
选项“g”以特定系统的 native 格式提供调试数据。
选项“-ggdb”有点丰富和昂贵。以可用的最具表现力的格式提供调试数据。

09-17 12:48