c/c++开发的工作者常常需要考虑跨平台使用的问题,那么在linux上编译是必不可少的一部分。gdb是linux下的c/c++调试工具,具体安装(这里用的是centos的系统,其它系统也大同小异):
yum install gdb
我们来一段c++代码,命名为test.cpp:
#include<iostream>
using namespace std;
int main(){
int a=0;
int b=10;
int c=b/a;
cout<<c<<endl;
return 0;
}
开始编译:
g++ test.cpp -g -o testout
运行:
make testout
可以发现,出错了,那么我们开始用gdb进行调试,输入:
gdb testout
上图为最终得到的结果,可以看出行号6处,出现算术运算溢出。下面介绍gdb常用指令:
-s 单步调试
-l 显示当前源码
-b 行号 表示在行号处设置断点
-r 表示开始调试
其实,gdb还有一种用法,对于大型项目,可以快速锁定异常的位置,就是设置core dump,使用命令:
ulimit -c unlimited
这样,每次运行程序出现异常时,都会在程序所在的目录下生产core dump文件,那么就可以使用:
gdb testout core-1234
快速找到bug的位置,但是使用gdb的前提是源码一定要写入二进制文件中,-g千万不能丢下。