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

Hin*_*sum 5 linux debugging gdb difference

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

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

Pav*_*aka 5

编译后的程序应该存储在某个地方,以便调试器(这里是 GDB)查看并跟踪它。

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

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

COFF - 通用对象文件格式 - 在类 UNIX 系统上。

PE/COFF - 可移植可执行文件 - 在 Windows 上非常有名,通常 dotnet 使用它。

DWARF - 在类 UNIX 系统上流行。

ETC..

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

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