上班日记 2015.10.10 星期六

1460阅读 0评论2015-10-11 lzj123
分类:C/C++

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

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

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


上一篇:c&c++基础
下一篇:上班日记 2015.10.13 星期二