gcc -g 和 gcc -g3 是在编译时用于生成调试信息的选项,它们之间的区别如下: -g 选项: 生成调试信息,以便在程序出现错误时进行调试和跟踪。生成的调试信息包含基本的符号表、源代码行号信息和局部变量的值。调试信息的生成速度较快,生成的调试信息文件较小。推荐在一般调试情况下使用。-g3 选项: 生成更详细的...
gcc 时有关调试信息:-g3(调试信息)/-O0(编译优化)/-s(裁剪执行程序信息) -g /-gdb/-g3 编译调试信息 “-o”是指目标文件 gcc 编译选项 -s 可以裁剪执行程序的信息,删除可执行文件中所有符号表和重新定位信息,以压缩可执行文件,导致gdb调试无效,使用命令 file
ENgcc 在linux系统中,默认是没有安装gcc编译器的,可以通过命令 rpm -q | grep gcc 来查看。安装...
Level3: 包含更多的信息,如程序中出现的所有宏定义.当使用`-g3'选项的时候,某些调试器支持 宏扩展 预处理器选项(Preprocessor Option) 选项解释 -Dmacro x -Dmacro=defn 定义宏macro的内容为defn -Umacro 取消宏macro,-U 选项在所有的 -D 选项之后处理 连接器选项(LINKER OPTION) 选项解释 -llibrary 连接名...
-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...
级别3(-g3)包含级别2中的所有调试信息以及源代码中定义的宏。 级别1(-g1)不包含局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储。 回溯追踪:指的是监视程序在运行过程中函数调用历史。 堆栈转储:则是一种以原始的十六进制格式保存程序执行环境的方法。
-g3:相对-g,生成额外的信息,例如所有的宏定义; 和-O一样,如果多个级别的-g选项同时存在,最后的选项会被生效 综上,很多项目的线上版本都是使用”-O2 -g”的编译选项进行编译,以便发生问题的时候容易定位。但这有一个很大的弊端就是目标文件会比不开启调试信息的情况下大很多,所以一般对外发布的软件都是不含有...
gcc -g3(生成调试信息,-gdwarf) gcc -ggdb3(生成gdb专用的调试信息) gcc -p(生成性能分析信息) gcc -pg(生成gdb专用的分析信息) 警告相关 gcc -w(关闭所有警告) gcc -Wall(输出所有警告) gcc -Wno-deprecated(关闭使用废弃函数等用法的警告)
刚发现一个有趣的细节,用 gcc -g3 编译 C 程序,默认生成的 debuginfo 里面的宏信息所使用的 dwarf 指令是 DWARF v5 格式里才有的,而此时 gcc 7.3.1 生成的 debuginfo 里面仍自称是 DWARF v4 这个格式版本。DWARF v4 白皮书里面并没有提到那些宏相关的指令,比如 DW_MACRO_define_strp 和 DW_MACRO_start_...
使用-g3和-O3进行编译 、、、 我见过的大多数构建环境至少有两种策略:调试构建与最终/优化/发布构建。对于gcc来说,这通常意味着-g对-O的某些版本。现在,我看到了这样一种情况:优化的构建是用-O3构建的,而调试版本是用-g3和-O3构建的。mangcc确实表明这是可能的,但对于实际调试而言,这似乎与我的直觉相悖...