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