gdb调试小结

一、启动调试

 测试程序

  1 #include<iostream>
  2 using namespace std;
  3 class AA
  4 {
  5     void f(){}
  6 };
  7 int main()
  8 {
  9     cout<<sizeof(AA)<<endl;
 10     AA a;
 11     cout<<sizeof(a);
 12     return 0;
 13 }

g++/gcc 命令加-g表示使用了gdb调试:

 file+生成的可执行文件(test):导入调试文件

 

二、常用调试命令(断点调试)

r 开始执行(run),如果有断点则直至第一个断点(break)

b 设置断点

b num(行号)

b function(函数名)

tb 断点位置 设置临时断点(只生效一次)

i b 检查断点信息

b 断点位置 if 条件  设置条件断点

ignore bnum count 表示接下来的count编号为bnum的断点忽略。

d 断点编号 删除断点(delete)

c 断点之后继续执行到下一个断点(continue)

n 单步运行(next)

s 进入函数(step) 

finish 执行至退出函数

start 停留在main函数的第一条语句

p 参数 打印参数信息

info 文件/函数 文件/函数信息

 三 、设置观察点

修改了一下测试文件

  1 #include<iostream>
  2 using namespace std;
  3 class AA
  4 {
  5     void f(){}
  6 };
  7 int main()
  8 {
  9     int b=1;
 10     for(int i=1;i<10;i++)
 11         b++;
 12     cout<<sizeof(AA)<<endl;
 13     AA a;
 14     cout<<sizeof(a);
 15     return 0;
 16 }

 watch 观察点 (遇到变量值变化,程序就会停下来)

 i watch 查看观察点

d 序号 删除观察点

 四、退出

 q

 

posted on 2017-08-31 21:32  kiplove  阅读(159)  评论(0编辑  收藏  举报

导航