梦想天空

.NET/.NET CF/Mobile Phones HP1937,Siemens M55,Siemens CXV65,Nokia 6021 PDU,SMS,Data Cabel,IrDA,Bluetooth and so on.
数据加载中……
[导入]小心Assert
  今天弄弯管机的破程序的时候,突然发现DEBUG模式和RELEASE模式下面得到的值不同,很是疑惑于这些微妙的差别,以为是RELEASE模式的优化出了问题。但对比DEBUG和RELEASE,即便将几乎所有编译选项都调整为一样,也不能得出一样的结果。

  后来进行了跟踪调试,以外的发现assert(oneFunction())这句竟然在RELEASE模式下面不执行。哦,我当时使用这个assert是为了断言一个函数的返回值为正,而这个函数正好要影响我的数据。当然assert在DEBUG模式下面没有问题,正常的编译运行成功。但在RELEASE模式下面一旦调试到这个assert的上一行,在进行单步跟踪的时候就跳到了assert的下一行。也就是说这个函数根本没有运行。原因就出现在这里。把assert去掉以后,函数就正常运行了。

  以后用assert要多加小心了,assert函数返回值的时候也一定要把返回值先赋值给一个变量,再assert,就不会出现这样的问题了。
文章来源:http://www.hesicong.net/pjblog/default.asp?id=294

posted on 2007-11-08 16:23 Dream world 梦想天空 阅读(85) 评论(1)  编辑 收藏

评论

#1楼  2007-12-14 15:04 ms44 [未注册用户]

废话
Assert没看见实在Debug namespace下么?
    回复  引用  查看    

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
向地震灾区捐赠爱心