GDB详细命令列表可参考:http://www.zeuux.org/science/learning-gdb.cn.html
1,
where : 输出堆栈中跟踪的函数调用记录.
bt : backtrace,同上.
backtrace full
bt full
bt full n
bt full -n
也打印本地变量。n是要打印的帧的数量,如上所述。
2,
frame <number>: 检查某一特定帖(一帖为一个函数调用).
frame n
n是一个从0开始的整数,是栈中的层编号。比如:frame 0,表示栈顶,frame 1,表示栈的第二层。
up
表示向栈的上面移动n层,可以不打n,表示向上移动一层。
down
表示向栈的下面移动n层,可以不打n,表示向下移动一层。
info frame 打印出更为详细的当前栈层的信息,只不过,大多数都是运行时的内内地址
info args
打印出当前函数的参数名及其值。
info locals
打印出当前函数中所有局部变量及其值。
info catch
打印出当前的函数中的异常处理信息。
3,
finish : 当用step命令进入函数内部后,用finish命令来执行程序直到从当前函数返回.
4,
用枚举代替宏定义: 便于调试时检查变量值的含义.
5,
watch <…>: 设置观察点.
6,
gdb不能单步调试if,while语句的多个条件函数.所以必要时要重写代码.
也可在被调函数内设置断点来检查其值,但只能查看而不能记录其值.
7,
调试工具: valgrind等.
8,
<<debugging>> , David J.Agans.
info break 查看断点
print x=1 修改变量x的值
set args 。。。 指定参数:
show args
display 设置自动显示的变量
delete 删除断点
frame或f 查看当前栈层的信息
info frame或info f 这个命令会打印出更为详细的当前栈层的信息,只不过,大多数都是运行时的内存地址。比如函数的地址,调用函数的地址,被调用函数的地址,目前的函数是由什么样的程序语言写成的、函数参数地址及值,局部变量的地址等等
path 《dir》: 设定程序运行路径
show 《dir》:查看路径
set environment varname[=value]:设置环境变量。如set env USER=hchen
show environment[varname]: 查看环境变量
info terminal: 显示程序用到的终端的模式
run>outfile: 重定向输出
tty /dev/ttyb:指定输入输出的终端设备