Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168404
  • 博文数量: 30
  • 博客积分: 296
  • 博客等级: 二等列兵
  • 技术积分: 407
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-16 21:37
个人简介

a

文章分类

全部博文(30)

文章存档

2016年(1)

2015年(8)

2014年(1)

2013年(11)

2012年(6)

2011年(1)

2010年(2)

分类: C/C++

2015-10-11 16:37:59

2015.10.10 星期六 晴
对象:程序(c++ QT)
系统:linux, windows 7
现象:执行中异常退出(段错误)
具体:程序执行某个动作时总是异常退出,这个程序经过好多人维护,前一个版本是正常的。

解决过程:
 在linux下执行命令ulimit -c unlimited, 生成core文件, 想通过gdb a.out corefile找到程序崩溃的具体位置,结果没有发现崩溃位置。只好通过调试一步一步的跟踪,终于找到了崩溃位置,有个指针的值不正常,原来这个指针没有new就使用了,也没有设置设置初始值为0,后来问该程序开发人员,说是这个指针不用了,应该是删除的时候没有删除干净。
 bug找到了,修改编译后重新执行,程序还是崩溃。只好采用屏蔽部分代码的招,终于找到了导致崩溃的代码,跟上面问题的原因是一样的,指针指向了一个随机地址, 但是此处的代码有时候是执行成功的(至少循环的第一次是成功的)。

教训总结:
1.  指针声明后,如果不能马上分配地址,一定要将其设定为NULL。
2.  删除代码时一定要删除彻底。将声明的变量删除,就可保证删除彻底了。
3.  改完代码后一定要将主要的功能执行一遍,如果有问题也能够比较容易找出问题所在。


阅读(1466) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~