gcc -g 和 gcc -g3 是在编译时用于生成调试信息的选项,它们之间的区别如下: -g 选项: 生成调试信息,以便在程序出现错误时进行调试和跟踪。生成的调试信息包含基本的符号表、源代码行号信息和局部变量的值。调试信息的生成速度较快,生成的调试信息文件较小。推荐在一般调试情况下使用。-g3 选项: 生成更详细的...
gcc 时有关调试信息:-g3(调试信息)/-O0(编译优化)/-s(裁剪执行程序信息) -g /-gdb/-g3 编译调试信息 “-o”是指目标文件 gcc 编译选项 -s 可以裁剪执行程序的信息,删除可执行文件中所有符号表和重新定位信息,以压缩可执行文件,导致gdb调试无效,使用命令 file excfilename可以看到有strip 一、gcc -s...
gcc 在产生调试符号时,同样采用了分级的思路,开发人员可以通过在 -g 选项后附加数字1、2、3指定在代码中加入调试信息的多少。默认的级别是2(-g2),此时产生的调试信息包括:扩展的符号表、行号、局部或外部变量信息。 级别3(-g3)包含级别2中的所有调试信息以及源代码中定义的宏。 级别1(-g1)不包含局部变量和...
-G3 为 80386 进行优化 optimize for 80386 -G4 为 80486 进行优化 optimize for 80486 -GR[-] 启用 C++ RTTI enable C++ RTTI -G5 为 Pentium 进行优化 optimize for Pentium -G6 为 Pentium Pro 进行优化 optimize for Pentium Pro -GX[-] 启用 C++ 异常处理(与 -EHsc 相同) enable C++ EH (same...
刚发现一个有趣的细节,用 gcc -g3 编译 C 程序,默认生成的 debuginfo 里面的宏信息所使用的 dwarf 指令是 DWARF v5 格式里才有的,而此时 gcc 7.3.1 生成的 debuginfo 里面仍自称是 DWARF v4 这个格式版本。DWARF v4 白皮书里面并没有提到那些宏相关的指令,比如 DW_MACRO_define_strp 和 DW_MACRO_start_...
-g -g3 gcc 支持4中级别的调试信息,-g0表示不生成调试信息,-g3表示生成最多的调试信息。-g默认为-g2。一般的调试信息包括行号,函数,外部变量。-g3包含其他额外的调试信息,比如宏定义。 -O1 -O2 -O3 -Os -O系列选项主要用于优化代码。 -O和-O1是等价的,不影响编译速度,并且会采用一些优化算法,降低代码...
-g2:默认-g的调试级别; -g3:相对-g,生成额外的信息,例如所有的宏定义; 和-O一样,如果多个级别的-g选项同时存在,最后的选项会被生效 综上,很多项目的线上版本都是使用”-O2 -g”的编译选项进行编译,以便发生问题的时候容易定位。但这有一个很大的弊端就是目标文件会比不开启调试信息的情况下大很多,所以一...
1. 解释 gcc 的 -g 选项是什么 -g 选项是 gcc(GNU Compiler Collection)编译器的一个调试选项。当使用这个选项编译程序时,gcc 会在生成的可执行文件或目标文件中包含调试信息。这些调试信息对于使用调试器(如 gdb)进行程序调试至关重要。 2. 阐述 -g 选项在编译过程中的作用 在编译过程中,-g 选项指示 gcc...
gcc -o a.out test.c -w,屏蔽了所有警告,只输出错误 -g -g3 gcc ⽀持4中级别的调试信息,-g0表⽰不⽣成调试信息,-g3表⽰⽣成最多的调试信息。-g默认为-g2。⼀般的调试信息包括⾏号,函数,外部变量。-g3包含其他额外的调试信息,⽐如宏定义。-O1 -O2 -O3 -Os ...
使用-g3和-O3进行编译 、、、 我见过的大多数构建环境至少有两种策略:调试构建与最终/优化/发布构建。对于gcc来说,这通常意味着-g对-O的某些版本。现在,我看到了这样一种情况:优化的构建是用-O3构建的,而调试版本是用-g3和-O3构建的。mangcc确实表明这是可能的,但对于实际调试而言,这似乎与我的直觉相悖...