当用gcc或Clang编译C源代码时,我总是使用-g标志为gdb生成调试信息.

gcc -g -o helloworld helloworld.c

我注意到有些人推荐-g3.-g-g3面旗帜之间有什么区别?-g-ggdb之间也有区别吗?

推荐答案

docs人中:

-g

以操作系统的本机格式(stabs、COFF、XCOFF或DWARF 2)生成调试信息.GDB可以解决这个问题

...


-ggdb

生成调试信息供GDB使用.这意味着使用可用的最具表现力的格式(矮人2,刺,或本机)


-gvmslevel

请求调试信息,并使用级别指定信息量.默认级别为2.0级不产生任何错误

……

级别3包括额外信息,如所有宏定义 出现在节目中.某些调试器在以下情况下支持宏扩展 您可以使用-g3.

C++相关问答推荐

MISIX标准和信号量的语义

由于未签名int导致的运行时错误"

是否可以在C中进行D3 D12申请?

segfault在C中使用getline()函数

C中空终止符后面的数字?

如何将FileFilter添加到FileDialog GTK 4

Mbed TLS:OAEP的就地en—/decryption似乎不起作用'

C/SDL程序,渲染不使用我的渲染器

如何在C宏中确定 struct 中元素的类型?

初始变量重置后,char[]的赋值将消失

不确定如何处理此编译错误

如何使用空元素块声明指针数组

生成一个半RNG,结果用C表示(无随机/随机)

如何在C中处理流水线中的a、n命令?

在同一范围内对具有相同类型的变量执行的相同操作在同一C代码中花费的时间不同

既然我们在 if 中将 int 的值更改为 10,为什么在第二个 fork 后,子进程及其创建的子进程都会打印 33 ?

const struct 成员的 typedef 中的灵活数组大小

cs50拼写器分配中的无限循环

使用fread()函数读取txt文件

为什么需要struct in_addr