Debug和Release的区别

Debug:调试版本,包括调试信息,所以其容量一般来说比Release大很多,并且不进行任何的优化(优化会使得调试信息复杂化,因为源代码和生成的指令之间关系会更复杂),以便于程序员进行调试。
Debug模式下生成两个文件:除了.exe或者.dll文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息。
Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的(调试信息可以在单独的PDB文件中生成)。
Release模式下生成一个文件.exe或.dll文件。

Obj文件夹的作用

在obj目录中,有debug和release两个子目录。

obj目录是项目生成dll的源目录,然后将生成好的dll复制到bin目录下。obj用于存放编译过程中生成的中间临时文件。在.Net中,编译时分模块进行的,每个模块的编译结果都保存在obj目录下,最后会合并为一个.exe或者.dll文件,保存在bin目录下。

因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个obj目录的作用就是保存这些小块的编译结果,并加快编译速度。

Debug和Release编译方式的本质区别
前面已经讲了二者的大致区别。
实际上,Debug和Release并没有本质的区别,他们只是一组编译选项的集合,编译器只是按照预定的的选项行动。
实际上,用户可以修改这些选项,从而得到优化过的调试版本或是带有跟踪语句的发布版本。

其他的一些概念
将不同版本的DLL混合而造成的不一致性形象地称为“动态链接库的地狱(DLL HELL)”。因此,当我们在使用DLL时需要注意:

不能将debug和release版的DLL混合在一起使用。debug是debug版,release是release版。
解决版本是将debug和release的程序分别放在主程序的debug和release目录下。

在实际生产环境中,尽量使用release版本的DLL。

Bin

Bin目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应文件夹bin/Debug和bin/Release。

obj

obj是object的缩写,用来存放编译过程中生成的中间临时文件。其中都有debug和release两个子目录,分别对应调试版本和发行版本,在.net中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。

总的来说:

bin是放最终代码的目录 。
obj就放中间代码的目录release和debug是不同的运行方式。
debug会增加调试代码,方便调试。
调试完后,用release版本发布,没有调试代码,减小程序体积,加快执行速度。

Debug和Release是什么意思?相关推荐

  1. 细说Debug和Release区别

    VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步 ...

  2. 关于Debug和Release编译方式

    问:怎么在VC6中把工程编译成release版本? 答:可以project->Set Active Config,选中release版本.此后,按F5或F7编译所得的结果就是release版本. ...

  3. Debug 和 Release 编译方式

    Debug 和 Release 编译方式的区别本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别 2. 哪些情况下 Release 版会出错 3. 怎样"调试& ...

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

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

  5. VS Debug和Release版本的区别

    VS Debug和Release版本的区别 1. 变量. 大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc(注1),而release的赋值 ...

  6. 关于Debug和Release之本质区别的讨论

    一.Debug 和 Release 编译方式的本质区别     Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化 ...

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

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

  8. android 宏替换_android 模拟宏定义,实现Debug amp; Release 模式-一团网

    以前在C/C++ 开发中,我们可以宏定义,Debug模式下,输出日志,方便测试.Release模式下,无日志输出. 使用Java时,Java 是解释语言,无法编译.就无模式之分了.有没有办法实现,De ...

  9. 关于如何判断程序和类库是Debug 还是 Release 的问题

    在发布程序时不小心把一部分Debug的dll文件和一部分Release的dll文件混合发布了,最后导致整个生产环境瘫痪(内存和cpu使用量很高,同时网站访问无响应).到现在我还搞不懂为什么会这样,也许 ...

  10. 【转】程序debug正常release错误

    原文:http://hi.baidu.com/leggle/blog/item/ec0c2e5400c3ed5dd10906a7.html 呵呵,Iris来了!由于最近所做项目接近尾声,想在relea ...

最新文章

  1. 经纬度坐标系与UTM MGRS坐标系之间的转换 c# 版本
  2. Java 8流和Lambda表达式–解析文件示例
  3. BZOJ.2738.矩阵乘法(整体二分 二维树状数组)
  4. python fortran混编 ctypes_关于python调用fortran编译的dll的问题
  5. MyBatis sql查询字段问题
  6. VS报错——无法打开文件XXX.lib
  7. paip.提升安全性--------密码控件与软键盘
  8. SQL Server 2008/R2数据库安装(步骤详细,截图清晰)
  9. Mysql出现Table 'performance_schema.session_status' doesn't exist
  10. 根据ip地址获取时区
  11. 20款简洁独特的logo设计
  12. 如何实现vue表单验证cron表达式?【亲测有效】
  13. 出师未捷先被封!三款APP宣战微信 来一个封一个?
  14. 桂 林 理 工 大 学实 验 报 告实验五 数组
  15. python编程自学_Python编程自学:一小时python入门教程
  16. 谷歌浏览器登录不了账号_腾讯qq无故冻结账号什么情况?qq号为什么登录不了方法官方回应...
  17. JST :Joint sentiment topic model ASUM :Aspect sentiment unification model
  18. [Bash]LeetCode195. 第十行 | Tenth Line
  19. 实验四 基于PPTP的远程VPN实现【网络安全】
  20. 使用Flink对hudi MOR表进行离线压缩

热门文章

  1. Deep-Residual-Shrinkage-Networks模型
  2. Zynq-7010/7020开发板(双核ARM Cortex-A9+A7)软硬件规格资料
  3. markdown公式中字母加粗
  4. java+uiautomator 打包运行
  5. 南宁漏水检测:热烈祝贺广西中水荣获广西首届著名品牌
  6. 【文本展开收起】uniapp—实现文本的展开与收起功能
  7. Java8--20道关于Stream流的题目练习
  8. 什么是NAT模式、路由模式
  9. 20189200余超 2018-2019-2 移动平台应用开发实践第九周作业
  10. Spring AOP 中 advice 的四种类型 before after throwing advice around