MFC之VS2008的DEBUG和RELEASE

作者分享了自己编写的一个简易点对点通信工具的经历,该工具采用TCP协议,并集成了服务器端与客户端的功能。在从Debug模式切换到Release模式的过程中遇到了问题,并详细记录了解决过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天写了一个迷你型的点对点的通信工具,纯练手,所以功能并没有那么强大,就是简单的点对点聊天,可以互相发送消息,使用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)的优化策略了。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值