debug下情况良好、release下频繁奔溃问题的跟踪与解析

dvlinker
C/C++领域优质创作者
博客专家认证
2012-03-21 01:04:15
最近一段时间一直忙于开发新平台系统的功能,今天测试那边拿过来简单的测试一下,并对相关需求和功能点进行验证。结果出现了一个奇怪的问题:在验证某个功能点时,在release模式下的程序频繁出现奔溃现象。之前在开发该功能点时也进行了充分的测试,程序一直运行正常,怎么一到release模式下就出现频繁奔溃的现象呢?

详见http://blog.csdn.net/chenlycly/article/details/7376000
...全文
243 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dvlinker 2012-03-30
  • 打赏
  • 举报
回复
欢迎大家积极讨论,都说说自己遇到的问题,都来总结总结!
dvlinker 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

说明一个问题,现在好多公司都没有规范代码管理啊,导致多人协同开发的时候,由于代码不同步导致的各种问题.
[/Quote]是啊,代码规范是要强调的,而且代码走读也是很重要的!
xiaohuh421 2012-03-26
  • 打赏
  • 举报
回复
说明一个问题,现在好多公司都没有规范代码管理啊,导致多人协同开发的时候,由于代码不同步导致的各种问题.
dvlinker 2012-03-26
  • 打赏
  • 举报
回复
大家可以把平时遇到的问题说一说,也好总结一下!

今天遇到的一个问题:
由于定长数组的长度定义小了,导致实际的数据存放到数组中后,数据被截断了,从而导致客户端登录服务器出现了异常!
dvlinker 2012-03-25
  • 打赏
  • 举报
回复
具体的情况是:同事修改了服务器的代码,其中包含一个宏定义的值(因为数据量变大了,所以将该值该大了),而我客户端定义定长数组用的就是这个值,当时同事改好了后把服务器升级了,结果一直没上传修改后的宏定义,所以当服务器回过来大量的数据时,导致客户端的定长数组溢出了!
dvlinker 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 visualeleven 的回复:]

引用 7 楼 chenlycly 的回复:

前段时间在跟踪bug的时候也发现了个debug和release下的一个区别,bug的问题是因为定义的定长数组越界了。
在调试的状态下,发现定长数组已经越界了,但是程序不没有立即奔溃,而是继续越界,一小会以后才奔溃,出现这种情况的原因是:debug下的内存有一定的保护措施。

都知道问题在哪里了?解决了?
[/Quote]呵呵,问题当时就解决了,主要是因为服务器和客户端的一个宏定义没有同步导致的!
Eleven 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chenlycly 的回复:]

前段时间在跟踪bug的时候也发现了个debug和release下的一个区别,bug的问题是因为定义的定长数组越界了。
在调试的状态下,发现定长数组已经越界了,但是程序不没有立即奔溃,而是继续越界,一小会以后才奔溃,出现这种情况的原因是:debug下的内存有一定的保护措施。
[/Quote]
都知道问题在哪里了?解决了?
dvlinker 2012-03-24
  • 打赏
  • 举报
回复
前段时间在跟踪bug的时候也发现了个debug和release下的一个区别,bug的问题是因为定义的定长数组越界了。
在调试的状态下,发现定长数组已经越界了,但是程序不没有立即奔溃,而是继续越界,一小会以后才奔溃,出现这种情况的原因是:debug下的内存有一定的保护措施。
dvlinker 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaofang201 的回复:]

release也可以调试的。修改一下工程的配置,生成调试信息即可
[/Quote]是的,可以的,配置一下就好了!问题也是通过release调试才找出来的!
SKINSE界面库 2012-03-22
  • 打赏
  • 举报
回复
release也可以调试的。修改一下工程的配置,生成调试信息即可
向立天 2012-03-21
  • 打赏
  • 举报
回复
在相关功能的代码里输出日志
这种情况就得这么分析
dvlinker 2012-03-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xianglitian 的回复:]

在相关功能的代码里输出日志
这种情况就得这么分析
[/Quote]呵呵,就是用华生医生,结合IDA工具来定位奔溃代码的,当然也有用windebug等工具的,前者的效果很好,而且能精确定位到某一行(包括库中代码),很好用的!
dvlinker 2012-03-21
  • 打赏
  • 举报
回复
欢迎大家来讨论类似问题,谢谢!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧