-----------基本功能---------------------
打印堆栈 bt(backtrace)
查看代码
根据行号 list xx 查看xx行代码
查看调试所处范围(当前侦) frame
断点
添加断点
根据行号添加 break xx,在xx行添加断点
break +xx, 在当前行前面xx行添加断点
break -xx, 在当前行后面xx行添加断点
根据文件名和行号添加
break file:linenum 在文件file的第linenum加断点
根据文件名和函数名添加断点
break file:function
在文件file的fucntion函数的入口处停止
根据条件停止
break if [condition]
观察点
watch
为表达式(变量)expr设置一个观察点。一量表达式值有变化时,马上停住程序。
rwatch
当表达式(变量)expr被读时,停住程序。
awatch
当表达式(变量)的值被读或被写时,停住程序。
info watchpoints
列出当前所设置了的所有观察点。
display expretion
观察expretion的值
info display 查看display状态
临时查看变量
print expretion [format]
或者p
按照format来打印expretion的值,如/x就是16进制打印
-------格式如下---------------
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
p *array@len
查看指针所指的len个变量
运行时修改变量值
查看内存
examine/x[n/f/u]
n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
f 表示显示的格式,参见上面。
如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。
u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字节,g表示八字节。
当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。
单步执行
continue [ignore-count]
c[ignore-count]
fg[ignore-count]
恢复程序运行,直到程序结束,或是下一个断点到来。
ignore-count表示忽略其后的断点次数。continue,c,fg三个命令都是一样的意思。
step 单步跟踪,进入函数体
next 单步,不进入函数体
跳出函数
until或u
结束调试
finish