Debug和Release的区别


1。Debug和Release有什么区别,为什么要使用Release版本!  
2。怎么把Debug转成Release   

Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。Release  Build不对源代码进行调试,不考虑MFC的诊断宏,使用的是MFC  Release库,编译十对应用程序的速度进行优化,而Debug  Build则正好相反,它允许对源代码进行调试,可以定义和使用MFC的诊断宏,采用MFC  Debug库,对速度没有优化。    
 
 
一、Debug  和  Release  编译方式的本质区别  
 
Debug  通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release  称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。  
Debug  和  Release  的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd  /Fo,但区别并不重要,通常他们也不会引起  Release  版错误,在此不讨论)  
 
Debug  版本:  
/MDd  /MLd  或  /MTd  使用  Debug  runtime  library(调试版本的运行时刻函数库)  
/Od  关闭优化开关  
/D  "_DEBUG"  相当于  #define  _DEBUG,打开编译调试代码开关(主要针对  
assert函数)  
/ZI  创建  Edit  and  continue(编辑继续)数据库,这样在调试过  
程中如果修改了源代码不需重新编译  
/GZ  可以帮助捕获内存错误  
/Gm  打开最小化重链接开关,减少链接时间  
 
Release  版本:    
/MD  /ML  或  /MT  使用发布版本的运行时刻函数库  
/O1  或  /O2  优化开关,使程序最小或最快  
/D  "NDEBUG"  关闭条件编译调试代码开关(即不编译assert函数)  
/GF  合并重复的字符串,并将字符串常量放到只读内存,防止  
被修改  
 
实际上,Debug  和  Release  并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。  
 
二、哪些情况下  Release  版会出错  
 
有了上面的介绍,我们再来逐个对照这些选项看看  Release  版错误是怎样产生的  
 
1.  Runtime  Library:链接哪种运行时刻函数库通常只对程序的性能产生影响。调试版本的  Runtime  Library  包含了调试信息,并采用了一些保护机制以帮助发现错误,因此性能不如发布版本。编译器提供的  Runtime  Library  通常很稳定,不会造成  Release  版错误;倒是由于  Debug  的  Runtime  Library  加强了对错误的检测,如堆内存分配,有时会出现  Debug  有错但  Release  正常的现象。应当指出的是,如果  Debug  有错,即使  Release  正常,程序肯定是有  Bug  的,只不过可能是  Release  版的某次运行没有表现出来而已。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CCS(Code Composer Studio)中,DebugRelease是两种不同的编译方式,它们有以下几个区别。 首先,Debug版本和Release版本的生成方式不同。Debug版本在项目的Build Options中,通过设置Compiler -> Generate Debug选项来生成。而Release版本是指发布版本,它主要通过进行各种优化来确保程序在代码大小和运行速度上都是最优的。 其次,Debug版本和Release版本在编译选项上也有区别。它们分别有一组针对不同目的的选项。比如,Debug版本可能会开启一些额外的调试信息,以便在调试过程中能够更好地定位问题。而Release版本则会进行一些优化,例如删除不必要的调试信息、进行代码优化等,以提高程序的性能和效率。 最后,Debug版本和Release版本在使用上也存在一些差异。在调试过程中,Debug版本可以通过设置断点、单步执行等方式来逐行调试程序。而Release版本则不会包含这些调试信息,因此无法直接进行调试。但是,可以通过一些间接的方式来"调试" Release版本的程序,比如使用日志输出进行调试、使用追踪工具来分析程序的执行流程等。 总结起来,CCS中的DebugRelease区别主要在于生成方式、编译选项和调试能力上。Debug版本用于开发和调试阶段,可以提供更多的调试信息;而Release版本则是发布版本,通过各种优化来提高程序的性能和效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [关于DebugRelease之本质区别的讨论](https://blog.csdn.net/a675311/article/details/50562913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [[转]CCS中DebugRelease的…](https://blog.csdn.net/pymqq/article/details/19977631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值