VS中Debug和Release版本的区别

来源:互联网 发布:grav cms 编辑:程序博客网 时间:2024/05/22 04:27

Release版称为发行版,Debug版称为调试版。     

VS中的程序有debug和release两个版本。

Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。Debug中可以单步执行、跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢。

 

Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。Release版运行速度较快,可执行文件较小,但在其编译条件下无法执行调试功能。

 

Release版本的程序是发布时用的版本,首先它优化了代码,去掉了调试符号,因此程序的体积会变小,运行速度也更快。缺点是运行出错难于定位,一般出错程序就会自动关闭。如果是debug版本出错,系统就会有错误的详细信息,如果是在IDE中打开,还能定位到出错的源代码具体在那行。

 

Release的exe文件链接的是标准的MFC DLL(Use MFC in a shared or static dll)。这些DLL在安装Windows的时候,已经配置,所以这些程序能够在没有安装Visual C++ 6.0的机器上运行。而Debug版本的exe链接了调试版本的MFC DLL文件,在没有安装Visual C++6.0的机器上不能运行,因为缺相应的DLL,除非选择use static dll when link。

       debug程序通常比release程序要慢,尤其是处理视频方便release要比debug快很多。在release模式对程序进行调试的时候经常会遇到变量虽然初始化了,但是在查看其值的时候却发现是一个随机的数并不是初始化的值,有时候在对变量进行监视的时候了,会出现找不到变量的情况,原因大致如下:

     debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc, 而release的赋值近似于随机。如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:用作控制变量将导致流程导向不一致;用作数组下标将会使程序崩溃;更加可能是造成其他变量的不准确而引起其他的错误。所以在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错,在release中就暴露出来了,这个找起来就比较难了。

   只有DEBUG版的程序才能设置断点、单步执行、使用 TRACE/ASSERT等调试输出语句。REALEASE不包含任何调试信息,所以体积小、运行速度快。

 

详情:http://javafans.iteye.com/blog/609937/

1 0
原创粉丝点击