暂时不用标题

暂时无子标题
随笔 - 25, 文章 - 1, 评论 - 181, 引用 - 0

导航

<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(3)

随笔档案

文章档案

相册

搜索

最新评论

阅读排行榜

评论排行榜

除虫记之十:CMemFile和优化选项

除虫记之十(CMemFile和优化选项 0.5小时/1人)

忙了这么久,终于要上线了,下午打了准备上线的安装包交给测试部测试去了,测试部提出了一些小的bug,说没什么大问题了,可以上线了。

把那些小bug做了完善后,又打了一个包交给测试部测试,我们这边简单测试了后,就等着测试部说可以走人了,都很轻松。

突然,一个测试人员说,崩溃了!

立刻过去一看,天哪,真的是一个可以重现的bug,这不是要命吗?这个时刻才测出这种问题来!

现象是:在注册的时候,如果输入错误的验证码,弹出一个messagebox,确定后,程序就崩溃了,这个现象只在那台机器上出现,xp系统,sp2。

天啊,怎么会有这种事情,怎么能这个时候才发现,还有一会儿就要往线上传了啊。

在我的机器上做这个测试,发现Debug版本下没有问题,Release版本下以极高的频率点那个弹出的messagebox,比如我按住回车键不动,一会儿就会崩溃。

查看崩溃地址,发现这个地址出现在OleLoadPicture()之中,就是把一块内存区域转换城jpg图片的实现中。
中间采用的是CMemFile加CArhive,IStream等实现的。
立刻想起这个崩溃曾经碰到过的,当时很难重现,又忙于其他的事情没有理会,当时的感觉就是可能在中间的某个处理函数中少加了try...catch块,审核代码,果然有一处没有加异常处理,加上,编译,运行,还是崩溃!

那个急啊!

编译带调试信息的Release版,运行,晕,怎么折腾都没有崩溃了。

要说人急的时候,脑子转的就是快呀,脑子灵光一闪,查看编译选项,发现是MaxSpeed,换成Disable,编译,运行,哈哈,可以了,我按住回车键折腾了几分钟没有崩溃。又换回MaxSpeed,运行了两次就崩溃了。换成MinSize也是崩溃,就Default和Disable不崩溃。

不知道什么原因,怀疑对CMemFile做了优化处理,比如每次分配地址固定啦等等,但不确定。一边传新的文件给测试部测试,一边自己加代码验证是不是分配地址的问题,发现两种情况下的地址都不是一直固定的,搞不懂啊。

准备发版后跟踪汇编看看两种方式有什么不同,以后再说啦。


教训:使用CMemFile出现莫名的bug,优先考虑一下优化的问题。

 

 

posted on 2006-01-16 08:54 糖水煎包 阅读(4132) 评论(9)  编辑 收藏

评论

# re: 除虫记之十:CMemFile和优化选项

啊%%¥¥%——*,我们的程序就因为优化,速度不一致了就敲掉了的
2006-01-16 11:03 | 紫水晶

# re: 除虫记之十:CMemFile和优化选项

你们就是这么处理bug的?晕
2006-01-17 11:48 | jason

# re: 除虫记之十:CMemFile和优化选项

怎么不说一下崩溃的情况,如内存重释放或是由其它什么引起的?
2006-01-18 16:04 | jruinet的BLOG

# re: 除虫记之十:CMemFile和优化选项

阅.
引以为戒.
2006-01-18 18:18 | HateMath

# re: 除虫记之十:CMemFile和优化选项

bs
2006-12-18 14:55 | BS lz

# re: 除虫记之十:CMemFile和优化选项

当图片格式破坏时,OleLoadPicture会引起崩溃
2007-06-18 12:57 | 阿地方

# re: 除虫记之十:CMemFile和优化选项

菜鸟,干脆全用DEBUG版吧,程序员做成这样真丢脸的
2007-09-07 19:52 | 高手

# re: 除虫记之十:CMemFile和优化选项

volatile
2008-01-07 15:57 | 菜菜鸟

# re: 除虫记之十:CMemFile和优化选项

好东西,支持
2008-05-27 13:58 | 氟碳
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]