原文来自网站:http://www.builder.com.cn/2008/0706/964938.shtml
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 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。
分享到:
相关推荐
作者:hazer,时间:2019-6-28杂记-47-杂记-46-杂记-45-杂记-44-杂记-35- 内置简介:github readme自动生成工具作者:hazer,时间:2019-6-27杂记-33-杂记-32-杂记-31-杂记-30-杂记-29- 杂记-28- 杂记-27-杂记-26-...
工作杂记-YUV的dump和read
Netlify开发设定Base directory: Not setBuild command: yarn buildPublish directory: public/Builds: Active本地开发人员yarn installyarn dev执照该项目是根据条款获得。
oracle杂记.doc 这是我个人的总结。 主要是oracle的编程以及体系结构的理解。
动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...
第14章 Pythonic与Python杂记.mp4
9、赴俄参展杂记 10、坚持顾客导向 同步世界潮流 11、不要忘记英雄——在来自市场前线汇报会上的讲话 12、在秘书座谈会上的讲话 13、资源是会枯竭的,唯有文化才能生生不息——在春节慰问团及用服中心工作汇报会上的...
首先提一下为什么要使用移动构造函数: 在多次使用传值做参数的方法时,不可避免的会产生临时对象从而调用拷贝构造函数。 . 默认的浅拷贝构造函数在临时变量被析构时还会释放其中的动态元素内存,这时便会对其他部分...
高中历史之历史百科希腊杂记素材
这是一个关于计算机基础知识的汇总 你可以从这里学习到关于计算机的一些基础的知识
李特伍德 一个数学家的杂记.pdf
杂记(一):Listener、Filter和工具 杂记(一):Listener、Filter和工具
concurrent 杂记
InstallshieldX安装制作杂记