GDB命令格式
为了调试方便,可以直接简写命令,比如list写l即可。
其他命令:bt,查看函数调用的栈空间信息
使用
#编译默认生成release版本,此时可执行文件只有二进制指令#编译的时候要指定debug版本,它才会把代码一起编译进去#如此,才有二进制指令和代码的对应关系,才能调试g++ main.cpp -o main -ggdb 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=99Ambiguous set command "i=99" #内部也有i这个变量,它会混淆,不知道是哪个set var i=99 #加一个var,说明是我们定义的变量。如果没有重名,就不用加varquit #退出
bt查看函数调用的栈
在程序崩溃时,可以使用gdb执行它,gdb可以找到错误的那一行代码。使用bt查看函数调用栈。
