gcc a.c b.c -o app -g
-g:会保留函数名和变量名于app中
1、 启动gdb调试功能
(1)gdb app
(2)给程序传参:set args xx1 xx2
2、 查看代码(list/l)
(1)查看当前文件:
l
l 行号
l 函数名
(2)查看非当前文件:
l 文件名:行号
l 文件名:函数名
(3)设置显示的行数
set listsize n
show listsize
3、断点操作(break/b)
(1)设置断点
b 行号
b 函数名
b 文件名:行号
b 文件名:函数名
(2)查看断点
i b 或 info b
(3)删除断点
d num(断点的编号,通过"i b"可得)
d num1 num2(删除多个断点)
d num1-num4(删除多个断点)
(4)设置断点无效
dis num(断点的编号)
(5)断点生效
enb num((断点的编号)
(6)设置条件断点
b 行号 if 变量名==var
4、调试相关
(1)让gdb跑起来
start:运行main()函数的1行
run/r:停在第一个断点的位置
(2)打印变量的值
p 变量名
(3)打印变量的类型
ptype 变量名
(4)向下单步调试(不进入函数体)
n / next
(5)向下单步调试(进入函数体)
s / step
跳出函数体:
finish
若跳不出注意函数体中是否有断点,如果有需要删掉或设置无效才可跳出
(6)继续运行gdb,停在下一个断点位置
c/continue
(7)单步调试中变量的自动显示
display 变量名
取消显示:
undisplay 编号
(8)从循环体中直接跳出(同样注意不能在循环中有断点)
until
(9)直接设置变量等于某值
set var 变量名=value
(10)退出gdb
q/quit