一直以来,都是在使用一些IDE的开发工具,但是前段时间,开始学习使用了vim和g++ 来重新学习c++,突然觉得应该重新学习下 一个新一点的调试工具 ,而不是出问题之后
再跑去使用vc,vs之类的工具来调试。
先写几个简答的调试命令。
run 是开始调试
finish 一直执行到该函数的返回值为止
continue 一直执行直到下一个断点 或者 程序执行结束
quit 离开调试(gdb)
下一步 next / step 两个命令都是下一步的命令
但是区别就像是 F10 和F11 的区别
step 进入函数内部 next 直接下一步
设置断点 break 行号 (函数名)
撤销断点 delete break 断点号
查看所有的断点 info break
查看 运行程序 所到的函数栈 backtrace
选择栈帧 frame 栈帧号
查看当前栈帧的所有变量的值 info locals
跟踪某个变量 display 变量名字
取消跟踪变量 display 跟踪的变量号
列出程序 (十行一次) list 行号 (函数名)
还有gdb的一个特点 就是 如果你不输入直接回车的话,执行的是上一次你执行的命令。
而且大部分命令单词都是可以直接缩写首字母的。
自己写了一个简单的调试程序
#include<iostream>
using namespace std;
int add(int num1, int num2)
{
return (num1 + num2);
}
/* 交换
* 输入两个数
* 直接改变引用形参*/
int change (int &num3,int &num4)
{
int temp = num3;
num3 = num4;
num4 = temp;
return 0;
}
/* 最大的公约数
* 输入 两个数
* 输出最大公约数*/
int the_same_num(int num5,int num6)
{
int temp;
if(!num6)
{
temp = num6;
num6 = num5 % num6;
num5 = temp;
}
return num6;
}
int main(void)
{
int i;
int j;
int k;
cout << "i:"<<i<<"j:"<<j<<endl;
change(i,j);
cout << "i:"<<i<<"j:"<<j<<endl;
k = add(i,j);
cout<<" i +j ="<< k<<endl;
k = the_same_num(i,j);
cout<<"最小公约数:"<<k<<endl;
return 0;
}