启动gdb
gcc a.c b.c c.c -o app -g , -g: 会保留函数名和变量名
gdb 可执行程序的名字, 例: gdb app
若程序是需要参数的, 则 set args xxx xxx, 例: 先启动gdb app, 然后set args xxx xxx
查看代码
l/list
当前文件:
l [空/行号/函数名]
非当前文件:
l 文件名:[行号/函数名]
设置显示的行数:
set listsize
,show listsize
设置断点
b/break [文件名:]n/函数名
, n是行号, 可以设置文件名
i b
查看所有断点
del/d num[num1-num2]
删除断点
dis num
使断点失效
enb num
使断点恢复
b n if xxx
条件断点
调试
start
运行一行, 停止
run/r
停在第一个断点的位置
p 变量名
打印变量的值
ptype 变量名
打印变量的类型
next/n
向下单步调试, 不进入函数体
step/s
向下单步调试, 进入函数体,
finish
退出函数体
- 如果出不去, 看是否函数体中的循环是否有断点
continue/c
运行到下一个断点处
q/quit
退出调试
display 变量名
自动显示变量名
undiplay num
去掉变量的自动显示, num为变量的编号
until
从循环体跳出, 注意循环体不含有断点
set var 变量名=value
直接设置变量的某一个值