MFC之VS2008的DEBUG和RELEASE

来源:互联网 发布:2016中国粮食浪费数据 编辑:程序博客网 时间:2024/04/30 09:04

昨天写了一个迷你型的点对点的通信工具,纯练手,所以功能并没有那么强大,就是简单的点对点聊天,可以互相发送消息,使用TCP协议实现。写这个主要是想封装出两个模块,就是TCP协议下的发送数据和接收数据,看很多教程上把服务器端和客户端作为两个project或者做两个界面,我觉得不太实用,就把服务器端和客户端揉合到一起了,每一个客户既可以做服务器也可以做客户端,就是用多线程实现的,没有什么技术难点,在此就不罗嗦了。


在编写过程中也是历经坎坷,但是还好都解决了,半天写半天调,昨晚九点多搞定了,还挺高兴。在debug模式下,测试通过,找了另外一台电脑也测试通过。但是我又想在一台电脑上测试时,发现程序运行错误,启动不了,这时候发现是exe文件是debug模式下的。于是乎就调到release模式下,再重新生成,乐呵呵的拿过去测试,一运行,互相发送一条消息后,接着就不行了,怎么都发不过去了,让我郁闷不已。


上网搜了下,有挺多说debug模式和release模式的区别啊什么的,但我感觉看了跟没看一样。。。。。现在遇到问题了,该怎么解决呢,网上有说在release下要初始化变量,可能是很多人都是因为变量的原因而导致的问题,但是这对我来说不可能,我声明变量必定初始化,这是几年来的习惯了。

还有人说把release模式设置debug,我觉得这样就没有意义了,而且debug下没有问题,把release设置为debug了,肯定能通过,但是这样我觉得就没有release的必要了。


那我该怎么办呢?老套路,messagebox定位错误,找到了出问题的地方,我对于一个连接,只要不断开,就一直可以相互发送和接收数据,当然,是有阻塞的,需要触发。但是release后,接收数据两次后,就莫名其妙的不接收数据了,退出来了。很是让我疑惑。


那既然debug下没问题,release后出了问题,就看看配置上它俩的差别了,比较发现,主要是release有一个优化的过程,于是乎尝试着修改优化项的配置。

VS2008下,是解决方案的右键,默认是

Configuration Properties
------>Optimization
--------->Optimization--->Maximize Speed (/O2)

我把它修改为:

Configuration Properties
------>Optimization
--------->Optimization--->Minimize Size (/O1)

然后release,再到其他电脑上测试,完全没问题了,哈哈。

release是肯定要做优化的,要不然release就没有太大意义了(个人意见),但是有很多种优化策略,需要根据自己的情况来选择,我这个小程序里用了多线程,为了保证数据访问的正确性,用了很多阻塞,如果用默认的Maximize Speed (/O2)选项,很容易就死掉了,所以就需要换一种优化策略,当然,这也是我水平太次,要是大牛写的代码,可能就用Full Optimization (/Ox)的优化策略了。


谨记谨记,学习的过程就是不断犯错误并积累解决方案的过程,加油

原创粉丝点击