在Linux中,最常用的调试器便是Gdb。Gdb采用GPL授权,是GUN计划之一。它和众多调试器一样,可以设置断点,可以查看变量的值,可以一步一步的查看程序的执行过程。
一、启动&退出Gdb
1. 启动:
a. 在编译源代码的时候,在末尾加上-g选项。这告诉了编译器在编译时要加入调试。 eg: gcc text.c –o text -g
b. 在a执行过后,在命令行输入
gdb 程序文件名
这样就启动了Gdb。启动后会出现版权信息。若要使启动后不出现版权说明,输入-q。
2. 退出:输入quit
二、显示命令行
1.list:显示10行命令
2.list m,n:显示m到n行命令
3.list fun:显示fun附近的命令行
4.如果在调试过程中需要输入Linux命令,则输入shell命令
eg:shell ls
·search、forward + 字符串:这两个命令都是用来找从当前行向下寻找第一个匹配的字符串
·reverse-search + 字符串:这个命令是用来找从当前行向前寻找第一个匹配的字符串
三、执行程序和寻求帮助
1. 当你输入了qdb -q text 后,还没有真正的运行程序。只有当我们输入run 后,程序才会真正的开始执行
2. 若你想详细了解gdb下某个命令的用法,你可以输入 help + 命令名
四、设置及管理断点
·设置断点
1. 以行数为设置断点
break + 行数
2. 以函数名为设置断点
break + 函数名
3. 以表达式设置断点
a) break + 函数名/行数 + if + 表达式
b) watch + 表达式
·管理断点
1. 查看断点 info breakpoints
2. 使断点中断失效或者有效
a) 使断点中断失效 disable + 断点编号
b) 使失效的断点有效 enable + 断点编号
3. 删除断点
·使断点失效并不代表删除了该断点。失效时,断点依旧存在,只是暂时不执行该断点。而删除时,改行断点消失
a) 删除全部断点 clear
b) 删除该行全部断点 clear + 行数
c) 删除该函数中的全部断点 clear + 函数名
d) 删除某一个特定断点 delete + 断点编号
五、查看和设置变量的值
1. print + 变量名 : 查看某变量的值
2. whatis + 变量名或表达式 : 查看某变量的数据类型
3. set variable + 变量名 = 值 : 设置某变量名的值
六、控制程序的执行
1. continue 程序继续运行至下一个断点
2. kill 结束程序运行
3. next/step 一步一步执行程序
a) next 不进入调用函数
b) step 会进入到调用函数