- 编译工具链
- gcc
- 常用选项
- -E: 生成预处理后的文件
 
- -S: 生成汇编文件
 
- -c: 生成目标文件
 
- 无: 生成可执行程序
 
- -Wall: 生成警告信息
 
- -g: 生成调试信息
 
- -O0, -O1, -O2, -O3
 
- -Dmacro
 
- -Dmacro=value
 
- -Idir
 
 
 
- 条件编译
- 在预处理阶段决定包含哪些代码片段,不包含哪些代码片段
 
- 预处理指令
 
- 作用
- 提高代码的可移植性
 
- 给宏提供默认值
 
- 避免头文件重复包含
 
- #if 0 代码片段  #endif
 
 
 
- gdb
- 观念
- 调试代码是写代码难度的两倍
 
- 程序报错的位置,很可能不是真正出错的位置
 
- 调试的基本步骤
 
 
- 命令
- 编译:加 -g
 
- 进入调试界面
 
- 退出调试界面
 
- 设置命令行参数
 
- 查看代码
- layout src
 
- layout asm
 
- layout regs
 
- layout next
 
- layout prev
 
- refresh
 
 
- 走一走
- run / r
 
- next / n
 
- step / s
 
- finish
 
- continue / c
 
 
- 停一停
- break / b
 
- info break / i b
 
- delete [NUM]
 
- ignore NUM  COUNT
 
 
- 看一看
- print / p
 
- display
- display 表达式
 
- info display
 
- undisplay [NUM]
 
 
- info locals
 
- info args
 
- info registers
 
- bracktrace / bt
 
- frame N
 
- x/nfu
 
 
 
- 查看 core 文件
- 程序崩溃时的内存快照
 
- 复现错误
 
- gdb  可执行程序  core文件