GDB命令格式
为了调试方便,可以直接简写命令,比如list写l
即可。
其他命令:bt,查看函数调用的栈空间信息
使用
#编译默认生成release版本,此时可执行文件只有二进制指令
#编译的时候要指定debug版本,它才会把代码一起编译进去
#如此,才有二进制指令和代码的对应关系,才能调试
g++ main.cpp -o main -g
gdb main #gdb需要调试执行文件
list
list #显示代码(只显示10行,再输入list则继续下去)
l #再显示10行代码
l 5 #list后面可以跟行号,表示从该行开始显示
l Test #list后面可以接函数名,表示显示该函数的周围
断点调试
break 10 #在第10行设置断点
b Test #break后面接函数名,在函数名上打断点
info break #查看断点
delete 2 #删除第2个断点
clear #清楚所有断点
run #执行
next #执行下一行代码,但不进入函数
step #单步。即下一句,并进入到函数中
continue #继续执行,直到下一个断点
print i #打印变量i
# 设置内存变量的值
set i=99
Ambiguous set command "i=99" #内部也有i这个变量,它会混淆,不知道是哪个
set var i=99 #加一个var,说明是我们定义的变量。如果没有重名,就不用加var
quit #退出
bt查看函数调用的栈
在程序崩溃时,可以使用gdb执行它,gdb可以找到错误的那一行代码。使用bt
查看函数调用栈。