安装GBD:apt-get install gdb

GDB命令格式

为了调试方便,可以直接简写命令,比如list写l即可。
image.png其他命令:bt,查看函数调用的栈空间信息

使用

  1. #编译默认生成release版本,此时可执行文件只有二进制指令
  2. #编译的时候要指定debug版本,它才会把代码一起编译进去
  3. #如此,才有二进制指令和代码的对应关系,才能调试
  4. g++ main.cpp -o main -g
  5. gdb main #gdb需要调试执行文件

list

  1. list #显示代码(只显示10行,再输入list则继续下去)
  2. l #再显示10行代码
  3. l 5 #list后面可以跟行号,表示从该行开始显示
  4. l Test #list后面可以接函数名,表示显示该函数的周围

断点调试

  1. break 10 #在第10行设置断点
  2. b Test #break后面接函数名,在函数名上打断点
  3. info break #查看断点
  4. delete 2 #删除第2个断点
  5. clear #清楚所有断点
  6. run #执行
  7. next #执行下一行代码,但不进入函数
  8. step #单步。即下一句,并进入到函数中
  9. continue #继续执行,直到下一个断点
  10. print i #打印变量i
  11. # 设置内存变量的值
  12. set i=99
  13. Ambiguous set command "i=99" #内部也有i这个变量,它会混淆,不知道是哪个
  14. set var i=99 #加一个var,说明是我们定义的变量。如果没有重名,就不用加var
  15. quit #退出

bt查看函数调用的栈

在程序崩溃时,可以使用gdb执行它,gdb可以找到错误的那一行代码。使用bt查看函数调用栈。