博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
debug、release
阅读量:4610 次
发布时间:2019-06-09

本文共 1531 字,大约阅读时间需要 5 分钟。

1.区别

Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。

     Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。Release不对源代码进行调试,不考虑MFC的诊断宏,使用的是MFC Release库,编译时对应用程序的速度进行优化,而Debug则正好相反,它允许对源代码进行调试,可以定义和使用MFC的 诊断宏,采用MFC Debug库,对速度没有优化。
 既然Debug和Release仅仅是编译选项的不同,那么为什么要区分Debug和Release版本呢?
    Debug和Release,在我看来主要是针对其面向的目标不同的而进行区分的。Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。
    下面仅就默认的Debug和Release版本的选项进行 比较,详细的编译选项可以看MSDN的说明。
    我们将默认的Debug和Release的选项设置进行比较,过滤掉相同设置,主要的不同如下:
编译选项:/Od /D "_DEBUG" /Gm /RTC1 /MDd /Fo"Debug““" /ZI
链接选项:/OUT:"D:“MyProject“logging“Debug“OptionTest.dll" /INCREMENTAL
Release设置:
编译选项:/O2 /GL /D "NDEBUG" /FD /MD /Fo"Release““" /Zi
链 接选项:/OUT:"D:“MyProject“logging“Release“OptionTest.dll" /INCREMENTAL:NO
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 合并重 复的字符串,并将字符串常量放到只读内存,防止被修改 

2.链接

https://blog.csdn.net/qq_35637562/article/details/78955200

转载于:https://www.cnblogs.com/fpzs/p/9596128.html

你可能感兴趣的文章
bootstrap以及考试复习
查看>>
android 中检查设备是否有网络可用
查看>>
linux磁盘命令-lsblk显现磁盘阵列分组
查看>>
vuex在页面中以对象展开运算符形式引入报错解决
查看>>
NET Remoting 示例
查看>>
文件系统典型实现方式
查看>>
20155207王雪纯 2006-2007-2 《Java程序设计》第1 周学习总结
查看>>
搭建jenkins集群node结点
查看>>
一个可收缩的panel
查看>>
ASP.NET IIS 支持PUT、DELETE请求
查看>>
网站建设中帝国cms如何循环调用栏目下级分类
查看>>
php对象的传递——“通过引用传递”or“传递的是object identifier”?
查看>>
windows(msvc)下编译boost库
查看>>
统计文件夹的大小
查看>>
websocket实现群聊和单聊(转)
查看>>
面试简单整理之zookeeper
查看>>
把你的英语用起来-七天行动-置之死的而后生
查看>>
react 原理集合
查看>>
The primitive Java types
查看>>
个人在AS的一些安卓适配经验
查看>>