参考资料:linux全套教程【黑马】P1-P98
- gcc编译的四个阶段
- gcc的一些参数
- gdb调试(可配合VS Code使用)
一步完成:gcc hello.c -o hello(编译器会自动完成中间步骤,并清理中间文件)
gcc的一些参数-E 预处理器 -S 编译器 -c 汇编器 -o 指定输出可执行文件名 -I 指定头文件搜索目录 -D 在编译的时候定义宏(控制log的输出) -g 在可执行程序中增加调试信息(gdb调试) -O 是否优化代码 0/1/2/3 -Wall 编译期间输出警告信息 -L 指定静态/动态库目录 -l 指定静态/动态库名字(掐头lib去尾.a/.so)gdb调试(可配合VS Code使用)
-
前提条件
- 可执行文件必须包含调试信息 gcc -g
-
启动gdb
- gdb 文件名
-
查看代码 l – list
- l 行号(或函数名)
- l fileName:行号(函数名)
-
设置断点 b – break
-
设置当前文件/指定文件断点
- b 行号(函数名)
- b fileName:行号(函数名)
-
条件断点
- b 行号 if value==10
-
查看设置的断点 i – info
- info break或简写为i b
-
删除断点 d – delete
- d 断点编号
-
-
开始调试
- start – 只执行一步,开始执行程序,停在第一行
- c – continue – 继续执行多步,直接停在断点的位置
- r – run – 开始执行程序,直接停在断点处
- start – 只执行一步,开始执行程序,停在第一行
-
单步调试
- n – next – 单步执行,不进入函数体内部
- s – step – 单步执行,可以进入函数体内部
- finish 从函数体内部跳出(需要将循环体中的断点先删掉)
- u – until – 退出当前循环
-
变量操作
- 查看变量的值 p – print
- 查看变量的类型 ptype 变量名
- 设置追踪变量 display 变量
- 取消追踪变量 undisplay 编号
- 获取编号 info display
- 设置变量的值 set var 变量名 = 值
-
退出gdb调试
- quit



