VC基础问题!!?(欢迎讨论)

mybilly2016 2002-07-23 07:12:44
VC++为什么调试时的结果和编译连接后的结果不同!!!
...全文
7 点赞 收藏 23
写回复
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
mybilly2016 2002-07-25
To holterli(holterli):
好的!你有什么好建议也可发给我!
E_mail:cbj0705@msn.com!
回复
mybilly2016 2002-07-24
同意lanfan(蓝色的帆)的说法!
因为我在Send()之前加一个Sleep()已解决这个问题!
但不知是否还有其他隐患问题呢?
回复
lanfan 2002-07-24
我也遇到类似的问题,我想是因为在调试和执行时的环境不同造成的。在调试的时候编译器要保护很多信息、堆栈等,还要保留调试中断等,因此在调试状态下执行的程序和运行时是有区别的,最好改善你的调试方法,在用WinSock进行网络编程时网络数据通常来得很快而你在单步执行的时候就可能出现这种情况:当一个消息在套接字上产生后可能要很长时间才执行到读取数据的这一步,此时数据的有效性就值得怀疑了。
回复
lanfan 2002-07-24
我也遇到类似的问题,我想是因为在调试和执行时的环境不同造成的。在调试的时候编译器要保护很多信息、堆栈等,还要保留调试中断等,因此在调试状态下执行的程序和运行时是有区别的,最好改善你的调试方法,在用WinSock进行网络编程时网络数据通常来得很快而你在单步执行的时候就可能出现这种情况:当一个消息在套接字上产生后可能要很长时间才执行到读取数据的这一步,此时数据的有效性就值得怀疑了。
回复
greenyard 2002-07-24
应该还是逻辑有问题,F5运行的时候如果设置断点的话,如果是非阻塞的通讯的话,有可能引起得到OnReceive消息的主程序执行的位置不同
回复
yspei 2002-07-24
up
回复
yhb4 2002-07-24
up
回复
holterli 2002-07-24
我在编写的过程中也遇到这种问题,希望你能在解决这个问题后,能告诉我一声,后者我们共同研讨,我得邮箱为:liyun819@21cn.com
回复
我不是大明 2002-07-24
当然了,在MFC的代码里面就分调试用和非调试用!
回复
xusheng 2002-07-24
你好!
我在开发中也遇到过这种情况,一般有两种情况,1)程序代码前后不同步:因为调试时是一条语句一条语句运行的,所以不会出现错误。
2)在程序代码中,你可能从内存中释放了某些重要的变量。
仅供参考
Good Luck
回复
nana11 2002-07-24
是不是时间问题?在调试和运行的时候运行的时间不一样,所以出错。
回复
mybilly2016 2002-07-24
当我把发送的包的尺寸变大时,又出现了那种情况!
不知要怎样来保护这一部分内存呢?
难道VC6中CSocket类不是异步的!
回复
wuxuan 2002-07-24
重新安装你的开发环境。
回复
wanglei888 2002-07-24
同意楼上的观点。对异步Socket而言,本来会收到5个OnRecevie消息的数据在调试状态下可能只会收到一个OnReceive消息,因为Socket是数据驱动的。我估计你的错误就是在这儿。
回复
mybilly2016 2002-07-23
因为我自定义了许多包,所以在传输的数据中加了校验信息,在接收方先判断校验信息,然后产生不同的分支!当然就显示不同的信息了!
编译连接不是所有的包接收时的信息不同,只是部分不同!
如接收20个包,前面10个包所显示的信息相同!而后面10个却不同!
回复
dy_paradise 2002-07-23
再说详细点儿,你说的不同是指怎样的不同呢
回复
sjzxyg 2002-07-23
逻辑上对吗
回复
mybilly2016 2002-07-23
我是在学做一个用WinSocket传输文件时,我用IF语句判断显示信息,在跟踪调试运行时显示的信息和编译连接成.exe文件或按F5运行时显示的信息不同!而不是Debug版本和Release版本的不同!我不知道是为什么?
回复
nscboy 2002-07-23
romanticist(让我拥抱你入梦)说的语句是由于调试的部分附加代码,它不会被编译到发行版本中
回复
wltsui 2002-07-23
不会吧, 我好像没有出现这种情况, 能详细说说吗!
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告