- 编译工具链
- 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文件