POPTEST老李谈Debug和Release的区别(c#)

poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标。如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200。

关于Debug和Release的区别之讨论本文主要包含如下内容:

1. Debug 和 Release 编译方式的本质区别
2. 哪些情况下 Release 版会出错
2. 怎样“调试” Release 版的程序

一、Debug 和 Release 编译方式的本质区别
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程
序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度
上都是最优的,以便用户很好地使用。
Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项
(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Rele
ase 版错误,在此不讨论)
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 并没有本质的界限,他们只是一组编译选项的集合,编译
器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调
试版本或是带跟踪语句的发布版本。

转载于:https://www.cnblogs.com/poptest/p/5161029.html

POPTEST老李谈Debug和Release的区别(c#) 1相关推荐

  1. POPTEST老李谈JVM、JRE、JDK、java ee sdk with jdk区别

    POPTEST老李谈JVM.JRE.JDK.java ee sdk with jdk区别 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作 ...

  2. Visual Studio Debug和Release的区别及obj的作用

    一.Debug和Release的区别 1.Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员 ...

  3. 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别

    相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程 ...

  4. Debug和release版本区别 原码反码补码的转换及存储

    #define _CRT_SECURE_NO_WARNINGS 1  //Debug和release版本区别(VS2019版) //例子 #include<stdio.h> //int m ...

  5. debug和release的区别

    1.Debug和Release有什么区别,为什么要使用Release版本!  2.怎么把Debug转成Release Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至 数M ...

  6. 深入了解Debug和Release的区别

    原文地址:https://blog.csdn.net/sky___ice/article/details/8993885 一: Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写, ...

  7. 关于bin和obj文件夹。debug 和release的区别(转)

    关于bin和obj文件夹. 楼主hcaihao(影子男孩)2002-05-29 20:04:24 在 .NET技术 / C# 提问 VS.Net会生成bin和obj文件夹以及它们下面的Debug和Re ...

  8. Visual Studio中Debug和Release的区别

    在Visual Studio中,生成应用程序的时候有2种模式:Debug和Release.两者之间如何取舍呢? 假设有这么简单的一段代码,在主程序中调用方法M1,M1方法调用M2方法,M2方法调用M3 ...

  9. 切身体会,debug与release的区别

    不知道大家用vs打包的时候会不会特意改为release版本后打包.     我最近改了一个程序,打包的时候没注意,用debug打的包,结果现场反馈说对图像进行处理的时候比上一个版本的程序慢一些.我就感 ...

最新文章

  1. 如何在30前成为“富翁”?
  2. laravel5.6 Session
  3. photoshop CS不能打字,出现死机等现象的解决办法!!
  4. C语言编程如何快速注释?
  5. Apache-Tomcat的安装配置
  6. 免费的数字图书馆_不仅是书籍:您当地图书馆可能提供的所有免费数字资料
  7. 您应该保持联系的十大高级Java对话
  8. linux系统信息查看命令
  9. 让jquery构造出类
  10. 云计算 雾计算 边缘计算的区别
  11. 彩虹仿优云宝模板,最新彩虹代shua网仿优云宝发卡网模板
  12. 用postman测试post接口的设置步骤,参数为json
  13. 本周大新闻|Elbit推飞行员专属AR头盔,苹果第二代MR将分高低配
  14. 解决炉石传说战网无法更新问题
  15. Cocoa -- 添加和移除开机启动项
  16. 现在各种云建站,挑两个给大家分析一下。
  17. IT界CICD新词-Dummy
  18. 算法笔记(11)逻辑回归算法及Python代码实现
  19. html鼠标的点击事件失效,为什么鼠标悬停事件不起作用呢?
  20. AIUI的技能工作室使用

热门文章

  1. zoj3802:easy 2048 again(状压dp)
  2. js便签笔记(3)——切记:appendChild()、insertBefore()是移动element节点!
  3. (原创)如何进行有符号小数乘法运算?(Verilog)
  4. 【零基础学Java】—Map集合概述(四十三)
  5. 元月份退休能享受涨养老金的待遇吗?
  6. 工资7500但没社保公积金,和工资4500但福利很好,这两份工作怎么选择?
  7. SATA硬盘接口是什么
  8. 早晨有好多学生在买早餐吃,这样好吗?家长不给孩子做饭吗?
  9. 想法越多越贫穷,赚钱的人,都是少想多干
  10. 微信小程序可以实现很多功能