1 调试流程
(1)编译添加 -g 选项;
(2)gdb execname;
(3)l 查看源文件。可用 l num,查看第num行代码;
(4)break num 设置断点。或者break funcname,在函数处设置断点;
(5)info break 查看所有断点;
(6)r 即run,运行程序;
(7)n 即next,执行下一条语句;
(8)c 即continue,相当于下一条语句;
(9)p varname 即print,打印变量varname的值;
(10)bt 查看函数堆栈;
(11)q 即quit,退出程序。
2 设置断点
break 简写:p
break num
break funcname
break filename:num
break filename:funcname
break *addr
break if cond
3 管理断点
enabled
disabled
enabled once
enabled for deletion
delete
2 常见命令
file :载入文件
quit :退出 q
run :运行程序 r
info :查看
info br
info source
info stack
info args
列出源代码 list l
list num
list startnum,endnum
list funcname
list filename:num
list filename:funcname
输出信息 print p
print var
print exp
print funcname(parlist)
print *table_start
print $1
print base@length
whatis 显示变量类型
修改变量值 set
set var=value
调试指令
next 单步,下一行代码 n
next num 向下执行num个next
step 单步,进入一个函数 s
finish 函数返回
until 退出循环 u
stepi
nexti
continue 继续,直到下一个断点 c
查看函数栈
backtrace n 打印栈的函数 bt
frame n 查看指定的栈层 f
up n
down n
查看函数相关信息
info args 查看函数参数
info locals 查看当前函数的局部变量
info catch 查看函数的异常处理信息
搜索代码
forward-search <regexp>
search <regexp>
reverse-search <regexp>
自动显示
dispaly exp
删除
undisplay dnum
delete display dnum
enable display dnum
disable display dnum
info display