-g选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调试时必须保证gdb能找到源文件。gdb提供一个类似Shell的命令行环境,上面的(gdb)就是提示符,在这个提示符下输入help可以查看命令的类别: (gdb) help List of cl...
strict- aliasing=n:使用n设置对指针变量指向的对象类型产生警告的限制程度,默认n=3;只有在-fstrict-aliasing设置的情况下有效; unknow-pragmas:使用未知的#pragma指令; uninitialized:使用的变量为初始化,只在-O2时有效; 以下是在-Wall中不会激活的警告选项: cast-align:当指针进行类型转换后有内存对齐要求更严格...
使用 gcc 编译程序,通常只需在命令行中输入相应的指令。例如,编译单个 C 源文件,可以使用“gcc file.c”的命令。-o 选项用于指定输出的可执行文件名称。若要优化后的代码,可使用 -O 选项,如 -O2 提供较高程度的优化。-Wall 选项能开启大部分常见的警告信息,帮助发现代码中的潜在问题。-g 选项用于调试信息,...
19. -march=architecture:指定目标架构,例如-march=native表示使用当前机器的最佳指令集扩展。 20. -pthread:启用线程支持。 21. -lmcheck:启用内存错误检查。 以上只是GCC编译选项参数的一部分,实际上GCC提供了更多的选项来满足各种编译需求。选项参数可以单独使用,也可以组合使用来达到更灵活、精确的控制。开发人员可...
1. gcc -E 预处理/头文件展开/宏替换 2. gcc -S: 生成汇编指令 3. gcc - c: 生成二进制文件 4. gcc -I: (包含头文件) 5. gcc -o: 指定输出 6. gcc -D xxxx: 编译时传递宏 -D之前 -D之后 7. gcc -g: 用于gdb调试 8. gcc -Wall: 多警告 ...
3 重要指令和CMake常用变量 4 CMake编译工程 5【实战】CMake代码实践 6 `_GLIBCXX_USE_CXX11_ABI`有什么作用 1、编译器 1 g++重要编译参数 1. -g 编译带调试信息的可执行文件 # -g 选项告诉 GCC 产生能被 GNU 调试器GDB使用的调试信息,以调试程序。 2. -O[n] 优化源代码 # 所谓优化,例如省略掉代...
要使用gdb调试,必须在编译指令中加上-g选项 二、怎么查看文件是否可以 debug 用下面的命令即可,如果可以debug,则会显示debug相关的一些信息,否则没有相关信息:objdump --syms your-binary | grep debug或objdump -t your-binary | grep debug,如下所示: ...
当使用GCC编译器编译程序时,-g选项可以用于生成调试信息。这些调试信息包括源代码的文本、符号表、类型信息、变量和函数的信息等,它们被存储在目标文件(.o文件)中。 GCC编译器生成调试信息的过程如下: 预处理(Pre-processing):在这个阶段,GCC首先对源代码进行预处理。预处理器根据源代码中的指令和符号表信息,展开头...
2.预处理指令参数 3.链接器参数 4.调试参数 三、具体参数详解 1.编译器优化参数 1.-O 参数 2.-O2 参数 3.-O3 参数 4.-Os 参数 2.预处理指令参数 1.-D 参数 2.-U 参数 3.-Id 参数 4.-Iu 参数 3.链接器参数 1.-L 参数 2.-l参数 3.-L/lib 参数 4.-Wl 参数 4.调试参数 1.-g 参数...
g3: 生成调试信息,级别为 3,包括源代码行号、变量名等,用于后续的调试。 mcpu=cortex-m3: 指定目标处理器的架构为 ARM Cortex-M3。 mthumb: 生成 Thumb 指令集的机器码。 std=gnu99: 使用 GNU C 99 标准。 nostartfiles: 不使用标准启动文件。 mapcs-frame: 生成 ARM Procedure Call Standard 框架。 ffun...