感悟生活

Life is like a box of chocolates. You never know what you're gonna get.
随笔 - 97, 评论 - 982, 引用 - 46

导航

工具

关于

标签

每月存档

广告



访客

 

用VC写程序的时候常常会遇到只在Release Build中才会出现的问题,由于这样的问题在Debug Build中不会出现,因此无法在Debug Build中调试。记得以前在CSDN的VC论坛中常常有人问这样的问题,大家好像也总结了不少,只是时间久了,记不太清楚了眨眼笑脸。只有一条印象非常深刻,就是自定义消息的响应函数的返回值一定得是LRESULT,如果是其他类型,比如void,在Debug下没问题,在Release下就有可能引起崩溃。之所以印象深刻,是由于我在这个上面吃过大亏悲伤的脸

Fixing Release Build Problems介绍了一些诊断和调试Release Build的方法,但是似乎没提到我说的这一条眨眼笑脸

相关文章

Loading...

打印 | 张贴于 2003-11-05 16:32:00 | Tag:工作

留言反馈

#re: Fixing Release Build Problems 编辑
自定义消息的响应函数的返回值一定得是LRESULT,我改成这个了,还是在release下不行
2005-12-17 00:44:00 | [匿名用户:peyoot]
#re: Fixing Release Build Problems 编辑
vc6.和vc.net的release都是可以设置为可以调试的,可以试试
2005-10-14 11:20:00 | [匿名用户:ZC]
#re: Fixing Release Build Problems 编辑
请问有人知道,如何使用c++ builder5中Image控件的picture属性调用loadfromfile函数打开*.jpg格式的文件,本人是初学菜鸟,请指教,多谢,多谢!
2004-11-15 22:23:00 | [匿名用户:张礼]
#回复: Fixing Release Build Problems 编辑
这种情况我倒还真预见过,就是前两天我写的那个关于Incremental Link选项问题。由于我的程序严重依赖于二进制地址,所以在这个选项打开时,Debug没问题,Release就崩溃。我猜想这个代码优化有关系,Debug不优化,而Release是要优化的。
2003-11-06 15:34:00 | [匿名用户:sam1111]
#我来举一个自己的例子 编辑
我遇到一种点背的情况。:),可能很少有人像我这样点背。

我的Release的服务遇到并发多的时候,容易意外崩溃。
你猜怎么回事?

原因可能是7月3日~7月24日之间,我神差鬼使地把service的Release MiniDependency编译模式下的运行时库从“Multithreaded”设置到了“Single-threaded”,而自己又没有注意到。可能是鼠标的滚轮随便滚了一下。

从而开始了漫长之久的调试之旅。当然总会找出程序的代码上一些其他毛病。然而,虽然在公司测试环境Debug模式一直稳定工作,但是Release到生产环境就总要一天意外崩溃一次。想了许久运行机理,都没有找到原因。

最后,终于按照BounsChecker的警告,把创建线程的方式从“CreateThread”变为“_beginthreadex”,重新编译之下,突然发现STLPort要去连编stlport_vc6_static.lib,而正常地应该是去连stlport_vc6.lib。这时候才发现运行时库一直编译错为“Single-threaded”了。

这样的后果,我猜想会造成线程之间不安全,数据易遭到破坏,这时候通常会有多个工作线程同时从线程池中醒来。请求频率低的时候,I/O 完成端口只会一再地唤醒同一个线程,所以不会涉及线程安全。当几十个请求一起抵达时,I/O完成端口唤醒了多个工作线程并行处理,这时候单线程的运行时库就有可能给service带来了致命一击。

要不是我改变了创建线程的方式,我根本不会想起来自己的服务用的是什么运行时库。呜呼!
2003-11-06 15:15:00 | [匿名用户:zhengyun_ustc]
#回复: Fixing Release Build Problems 编辑
Ooh, that's an improvement.
2003-11-05 20:06:00 | [匿名用户:sam1111]
#回复: Fixing Release Build Problems 编辑
never played with that one before, but vs.net requires message handlers strong-typed
2003-11-05 20:04:00 | [匿名用户:saucer]
#回复: Fixing Release Build Problems 编辑
开心到处做广告:)

哪位有关于Fixing Release Build Problems方面的经验,可以在这里share一下:)
2003-11-05 17:46:00 | [匿名用户:sam1111]
#回复: Fixing Release Build Problems 编辑
参加博客堂杯征文吧?
2003-11-05 17:42:00 | [匿名用户:开心就好]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System