(1)打开需调试的文件
gdb test
或
gdb
file test
(2)运行相关
run( r) [输入参数] #开始运行程序,与 set args xxxx 同理
next(n) #单步运行程序(不进入子函数)
step(s) #单步运行程序(进入子函数)
finish #运行程序,直到当前函数结束
continue( c) #继续运行程序,直到断点/结束
until #运行程序直到退出循环体
until 行号 #运行至某行,不仅仅用来跳出循环
call 函数(参数) #调用程序中可见的函数,并传递“参数”,如:call gdb_test(55)
quit(q) #退出gdb
(3)查看程序及断点调试
list(l) [行号/函数名] #查看程序
break(b) 函数名/行号/文件名:行号/行号if条件 #打断点
frame(f) 栈帧号 #选择栈帧
print( p) 变量名/函数名(参数) #查看指定变量值
display 变量名 #单步调试中,每次单步指令后输出被设置的表达式和值
watch 变量名 #对指定变量进行监控,值发生改变就显示
info break(b) #查看所有断点
delete 断点号n #删除第n个断点
disable 断点号n #暂停第n个断点
enable 断点号n #开启第n个断点
clear 行号n #清除第n行的断点
delete breakpoints #清除所有断点
whatis #查询变量或函数
info(i) 或 locals #查看当前栈帧局部变量的值
info function #查询函数
info locals #显示当前堆栈页的所有变量
(4)查询运行信息
backtrace(bt) #显示当前调用堆栈;
up/down #改变堆栈显示的深度
set args 参数 #指定运行时的参数
show args #查看设置好的参数
info program #来查看程序的是否在运行,进程号,被暂停的原因
set var 变量=XX #对调试中的变量进行赋值
(5)分割窗口layout——用于分割窗口,可以一边查看代码,一边测试
layout src #显示源代码窗口
layout asm #显示反汇编窗口
layout regs #显示源代码/反汇编和CPU寄存器窗口
layout split #显示源代码和反汇编窗口
Ctrl + L #刷新窗
(6)linux调试Segmentation fault (core dumped)
http://www.cnblogs.com/hazir/p/linxu_core_dump.html
###cgdb:gdb的界面增强版