首页 新闻 会员 周边 捐助

debug 和 Relesase 的区别

0
悬赏园豆:5 [已关闭问题]

???????

双月惊飞鸟的主页 双月惊飞鸟 | 初学一级 | 园豆:0
提问于:2009-05-20 16:08
< >
分享
其他回答(2)
0

大侠,你这就不专业了!这种问题完全可以 google 的啊!

 

一、Debug 和 Release 的区别
        Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
     Debug 和 Release 的真正区别,在于一组编译选项。
Debug 版本  
参数       含义  
/MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库)  
/Od 关闭优化开关  
/D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对assert函数)  
/ZI  
创建 Edit and continue(编辑继续)数据库,这样在调试过程中如果修改了源代码不需重新编译  
GZ 可以帮助捕获内存错误  

  
Release 版本 参数含义  
/MD /ML 或 /MT 使用发布版本的运行时刻函数库  
/O1 或 /O2 优化开关,使程序最小或最快  
/D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数)  
/GF 合并重复的字符串,并将字符串常量放到只读内存,防止被修改  


Debug 和 Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。 

 

http://www.google.cn/search?hl=zh-CN&q=debug+%E5%92%8C+Relesase+%E7%9A%84%E5%8C%BA%E5%88%AB&btnG=Google+%E6%90%9C%E7%B4%A2&meta=&aq=f&oq=

陛下 | 园豆:3938 (老鸟四级) | 2009-05-20 16:16
0

在.NETJ里简单的说(不完全对)

1. DEBUG生成的Assembly里的代码是没有优化过的。

2. DEBUG可能会有一些自定义的条件编译来生成跟踪信息。

3. DEBUG会根据你的代码在生成的Assembly里面插入很多的空操作指令,这样调试器才能按代码行进行调试。

Azuresong | 园豆:3565 (老鸟四级) | 2009-05-20 18:53
0

debug 在代码中设置断点,然后项目运行到这段代码时就会停留,然后你可以看到代码中变量的值,方法调用是否正确。。。

Release 不能调试,出现问题立即中止执行下面的代码,退出应用程序。如果项目或网站已经稳定,或给别人演示时,就要用Release

月光小提琴 | 园豆:44 (初学一级) | 2009-05-21 09:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册