您的位置:首页 > 运维架构 > Linux

[置顶] Linux 使用gdb对c/c++代码进行调试

2017-09-13 20:04 846 查看
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 testoutcore-1234


快速找到bug的位置,但是使用gdb的前提是源码一定要写入二进制文件中,-g千万不能丢下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: