一次难忘的linux下段错误调试经历

前段时间客户反映程序有频繁奔溃的问题,于是抽时间做内存泄露的优化。

终于费了九牛二虎之力使用vld解决了内存泄露的问题,而且windows下都测过了,可以正常运行,

但是部署到linux系统上的时候无缘无故出现段错误的问题

奔溃了一上午加帮个下午,试了各种方法,最后成功解决,特此记录一下

首先我的程序是基于qt的,之前没编译过debug版本的,编译debug的时候需要在后面加个-d参数

然后就是设置系统生成core dump文件

ulimit -c unlimited //取消系统限制

sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t //设置输出core的位置及格式

yum install gdb //没有gdb的话安装gdb

./程序名   //运行待奔溃程序,得到奔溃日志

gdb ./程序名 /tmp/coredump文件 // 进入gdb调试界面

输入run程序会运行到崩溃处停止

输入bt 查看奔溃前调用堆栈

我的程序是在CBaseSocket::OnWrite处出问题,我猜测可能是网络部分有问题,

后来我仔细查看了一下那儿,果然不出所料,就此,问题解决,世界又恢复了往日的平静

如果你在开发中遇到类似的问题,可以参考我的经验,或者求助我,毕竟这种问题对一个新手来说太难了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值