- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Debug和release的区别解读
Debug 和release 的区别
一.定义:
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用在于一组编译选项
我们将默认的Debug和Release的选项设置进行比较,过滤掉相同设置,主要的不同如下:
编译选项:/Od?/D?_DEBUG?/Gm?/RTC1?/MDd?/FoDebug““?/ZI链接选项:/OUT:D:“MyProject“logging“Debug“OptionTest.dll?/INCREMENTALRelease设置:编译选项:/O2?/GL?/D?NDEBUG?/FD?/MD?/FoRelease““?/Zi链?接选项:/OUT:D:“MyProject“logging“Release“OptionTest.dll?/INCREMENTAL:NO
Debug 版本?? 参数?????? 含义?? /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库)?? /Od 关闭优化开关?? /D _DEBUG 相当于 #define _DEBUG,打开编译调试代码开关(主要针对assert函数)?
assert是指编写代码时做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言? /ZI?? 创建 Edit and continue(编辑继续)数据库,这样在调试过程中如果修改了源代码不需重新编译?? GZ 可以帮助捕获内存错误?
/Gm??打开最小化重链接开关,减少链接时间??
?
Release 版本 参数含义?? /MD /ML 或 /MT 使用发布版本的运行时刻函数库?? /O1 或 /O2 优化开关,使程序最小或最快?? /D NDEBUG 关闭条件编译调试代码开关(即不编译assert函数)?? /GF 合并重复的字符串,并将字符串常量放到只读内存,防止被修改?
MDd与MD首先,Debug版本使用调试版本的运行时库(/MDd选项),Relase版本则使用的是发布版本的运行时库(vcrt.dll)。其区别主要在于运行时的性能影响。调试版本的运行时库包含了调试信息,并采用了一些保护机制以帮助发现错误,也因此,其性能不如发布版本。编译器提供的Runtime?Library很稳定,不会造成Release版本错误,倒是由于Debug版本的Runtime?Library加强了对错误的检测,如堆内存分配检查等,反而会报告错误,应当指出,如果Debug有错误,而Release版本正常,程序肯定是有Bug的,只是我们还没有发现。
ZI与Zi其次,/ZI选项与/Zi选项。通过使用/ZI选项,可以在调试过程修改代码?而不需要重新编译。这是个调试的好帮手,可如果我们使用Release版本,这将变得不可行。Od与O2/O2与/Od选项:Od是关闭编译器优化,普遍用于Debug版本。而O2选项是创建最快速代码,这当然是Release版本的不二选择。RTCx选?项/RTCx选项让编译器插入动态检测代码以帮助你检测程序中的错误。比如,它会将局部变量初始化为非零值。包括用0xCC初始化所有自动变量,0xCD初始化堆中分配的内存(即new的内存),使用0xDD填充被释放的内存(即delete的内存),0xFD初始化受保护的内存(debug版在动态分配内存的前后加入保护内存以防止越界访问)。这样做的好处是这些值都很大,一般不可能作为指针,考试,大提示作为数值也很少用到,而且这些值很容易辩认,因此有利于在Debug版本中发现Release版才会遇到的错误。另外,通过函数指针调用函数时,会通过检查栈指针验证函数调用的匹配性(防止原型不匹配)。使用/RTCx选项会造成Debug版本出错,而Release版本正常的现象,因为Release版中未初始化的变量是随机的,很可能使指针指向了有效但是错误的地址,从而掩盖了错误。这个编译选项只能在/Od选项下使用。Gm,INCREMENTAL?or?NO编译选项中的Gm和链接选项中的INCREMENTAL都只为一个目的,加快编译速度。我们经常遇上这样的问题,只修改了一个头文件,结果却造成所有动态库的重新编译。而这两个选项就是为了解决这样的问题。如果启用了/Gm开关,编译器在
您可能关注的文档
- dazhi解读.doc
- 1111试车方案讲解.doc
- 11111轮台县文化路排水技术标1标段讲解.doc
- 11151回采工作面回撤安全技术措施2讲解.doc
- 110kV碧加科玉高甲、乙停电施工起重吊装施工方案(电03)讲解.doc
- db2命令实例大全解读.doc
- 1111第一单元走进化学殿堂_复习课讲解.ppt
- 1111你一定会听见的讲解.ppt
- 11306综采补充安全技术措施讲解.doc
- DBJ-T01-43-2003_(北京)通用家庭居室装饰工程质量验收标准解读.doc
- 乡村手作工坊策划 4 类非遗手作带动村民增收商业计划书.doc
- 心理工作室青少年被同学传坏话后愤怒策划【6次调适】——不暴躁会冷静商业计划书.doc
- 心理工作室青少年回答问题卡壳策划【5次训练】——不紧张会应对商业计划书.doc
- 光伏发电量监测策划 实时数据提升管理效率商业计划书.doc
- 心理中心青少年忘带红领巾策划【6次解决】——不着急找办法商业计划书.doc
- 心理中心青少年忘带作业着急策划【5次解决】——不慌乱找办法商业计划书.doc
- 心理中心青少年被老师批评策划【6次疏导】——不沮丧会改进商业计划书.doc
- 心理中心青少年回答问题被嘲笑策划【7次修复】——不自卑敢再答商业计划书.doc
- 心理中心青少年回答问题被纠错策划【7次接受】——不抵触会改正商业计划书.doc
- 心理中心青少年回答问题声音小策划【7次训练】——敢大声清晰说商业计划书.doc
最近下载
- 物业市场拓展工作计划方案.docx VIP
- 贝壳加盟合同协议.docx VIP
- 部编版二年级上册道德与发治第1、2次集体备课.pdf VIP
- 2021环境影响评价报告公示:废催化剂综合利用环评报告.docx VIP
- 新解读《渠道防渗衬砌工程技术标准 GB_T 50600-2020》最新解读.docx VIP
- 聚醚改性的聚异氰酸酯组合物.pdf VIP
- 工程项目驻场运维方案(3篇).docx VIP
- 2022年“学宪法讲宪法”活动知识竞赛题库.docx VIP
- 食品生产许可培训课件.ppt
- 2025纪念中国人民抗日战争暨世界反法西斯战争胜利80周年主题党课传承抗战精神开创美好未来.pptx VIP
文档评论(0)