首页
社区
课程
招聘
关于release和debug的一点疑惑
发表于: 2005-5-4 22:04 6527

关于release和debug的一点疑惑

2005-5-4 22:04
6527
昨天写了一个crackme,用浮点运算实现的算法...其中用到一个C的库函数EXP(),在debug生成的运算结果和用release生成的结果有少许差别,导致我调试了2个小时。哪位能解释一下这种现象的产生?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 50161
活跃值: (20605)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
是不是release一些代码优化了?
2005-5-5 09:48
0
雪    币: 149
活跃值: (344)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
的确是这样...
我也发现了反汇编后的两个的汇编代码是不一样的...
2005-5-11 17:57
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
4
这个是编译器问题,可以用其他一些方法避免,有时候必须修改代码。
2005-5-12 13:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
debug编译的里面有很多填充
2005-5-13 00:21
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
肯定是有什么变量没初始化,
或者没赋值就用了
2005-5-21 20:30
0
雪    币: 41
活跃值: (194)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
本人不建议 用debug 版本调试VC程序,这样会屏蔽你的程序许多潜在问题,在真正release的时候,发生莫名奇妙的问题,比如 debug版本帮助你自动清零分配内存或者局部变量;加大程序代码之间的“间隙” 并确插入大量调试指令0xCC(int3),保证程序函数堆栈溢出而不跑飞等等,这些问题只有在Release下间隙暴露,导致发行产品有潜伏BUG;

严重建议用release版本带有调试信息调试。具体修改方法:
在工程设置中::
1.C/C++
  Optimi&zations :中 选Disable(Debug)
  Debug info:中选择Program Database
2.link:
   Generate debug info 选上()
   Generate &mapfile 选上(可以让别的调试器有源码调试功能)
还有好多让vc编译速度变快的方法:
C/C++
Precompliled Headers
@Not using precompiled headers...选
Link:Customize
@Use program &database.....不选
程序不要包含stdafx.h stdafx.cpp 等。直接引用 <windows.h>,<stdio.h>等等(在具体可以见 编程高手甄言)
2005-6-16 11:33
0
游客
登录 | 注册 方可回帖
返回
//