Debug版本:通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

Release版本:称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

实际上,Debug版本和 Release 并没有本质的界限,他们只是一组编译选项的集合,编译器只是按照预定的选项行动。事实上,我们甚至可以修改这些选项,从而得到优化过的调试版本或是带跟踪语句的发布版本。

在Debug或Release文件夹中,通常会看到几种类型的文件:

1、应用程序扩展类型文件:也就是dll文件(动态链接库);

2、XML文档类型文件:此文件中保存的是dll文件中类、方法、参数等注释信息。若没有此文件,在使用dll文件中的类和方法时,在intelisense中无法看到相应注释帮助信息;

3、Program Debug Database【程序数据库】:

a、序数据库文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。 在使用 /Debug或/Release 生成时,会创建PDB 文件;

b、以使用 /debug:full 或 /debug:pdb-only 生成应用程序。 使用 /debug:full 生成可调试的代码。 使用 /debug:pdbonly将产生 PDB,但是不会产生通知JIT编译器调试信息可用的 DebuggableAttribute。 如果想生成的发布版本是不希望可调试的,那生成的PDB文件,请使用 /debug:pdb-only;

c、isual Studio调试器使用EXE或DLL文件中的PDB路径查找 project.pdb文件。 如果调试器无法在该位置找到 PDB 文件,或者该路径无效,调试器将先搜索包含EXE的路径,然后搜索“选项”对话框中指定的符号路径。 该路径通常是“符号”节点中的“调试”文件夹。 如果调试器无法找到 .PDB 文件,则显示“查找符号”对话框,这将允许您搜索符号或向搜索路径添加其他位置;

d、对Debug文件夹和Release文件夹中均有pdb,它们的不同在于:Debug中的pdb是full,保存着调试和项目状态信息,有断言、堆栈检查等代码;Release中的pdb是pdb-only,保存的信息也就是,出了什么错误以及错误在哪行;

e、想在生成文件时不生成pdb文件,可在项目属性中的生成--高级--调试信息--选择none项就可以了;

备注:个人认为在发布项目时,应该以Release方式来生成文件,同时以pdb-only的形式生成pdb文件,以备不时之需。当然,最终对于pdb-only和none的选择看具体情况。

项目Debug版本与Release版本的区别的更多相关文章

  1. debug版本和release版本的区别?

    好久没有做web项目了,这项目完成了要发布网站,不好忘了 以前操作过的? 还好脑子还是有点印象 现还是 写个文档吧记录吧 免得 以后作别的了又忘了 那可不妙啊 网站发布步骤:1.先将

  2. MFC下debug改成release版本出现问题及解决办法

    自己在debug下成功运行了自己写的测试自己写第三方库的程序,这里有用到opencv库,所以同时用到了自己的库和opencv的库,需求因为要进行速度的测试,是想要把debug改成release版本,这 ...

  3. 解决VS+opencv中Debug版本与Release版本lib切换的问题

    Author: Maddock Date: 2015-03-26 09:34:48 问题来源:http://bbs.csdn.net/topics/390733725 PS: 按照上述方法做的时候,在 ...

  4. Android 签名(7)签名常见问题,debug签名和release签名的区别等

    一般在安装时提示出错:INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES 1) 两个应用,名字相同,签名不同 2) 升级时前一版本签名,后一版本没签名 3) ...

  5. Maven中的SnapShot版本和Release版本

    # Maven中的SnapShot版本和Release版本 ## 区别 - SnapShot 快照版本- Release 发布版本 ## 重要区别 - 本地获取这些依赖的机制不同,如果是快照版本,Ma ...

  6. Maven的Snapshot版本与Release版本

    1. Snapshot版本代表不稳定.尚处于开发中的版本 2. Release版本则代表稳定的版本 3. 什么情况下该用SNAPSHOT? 协同开发时,如果A依赖构件B,由于B会更新,B应该使用SNA ...

  7. maven 中snapshot版本和release版本的区别

    maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...

  8. VS中Debug模式和Release模式的区别

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

  9. 【C++】Debug模式和Release模式的区别

    VS中的程序有两种编译模式:Debug模式和Release模式. Debug通常称为调试版本,通过一系列编译选项的配合,编译结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能 ...

随机推荐

  1. 650. 2 Keys Keyboard

    Initially on a notepad only one character 'A' is present. You can perform two operations on this not ...

  2. [HTML] H5在webApp中的注意事项

    常用的meta标签 <!--防止手机中网页放大和缩小--> <meta name="viewport" content="width=device-wi ...

  3. Linux 套接字通信笔记(一)

    协议 TCP(传输控制协议),UDP(用户数据包协议)为传输层重要的两大协议,向上为HTTP提供底层协议,向下为数据链路层封装底层接口,乃是通信重中之重.TCP是面向流传输的协议,在编程中形象化为St ...

  4. php5数组与php7数组区别

    http://ju.outofmemory.cn/entry/197064 http://www.fzb.me/2015-9-16-php7-implementation-hashtable.html ...

  5. rolling方式修改oplog

    在 3.4之前版本 , 修改oplog 是一个非常麻烦的事情, 要停数据库 , rolling方式适合 3.4 之前版本修改oplog的大小 1. 配置文件注释 replSet2. 配置文件 oplo ...

  6. 用expect解决批量Linux集群机器间SSH免密码访问

    转自:http://blog.csdn.net/aichaoguy/article/details/11693269#!/bin/bash #check whether package 'expect ...

  7. python中del函数的垃圾回收

    今天学习面向对象里的类被del函数的垃圾回收过程搞的晕头转向,经过了老师的讲解还是是懂非懂,然后看了很多博客慢慢的心里才有了个大概的了解. 刚刚看到一篇博客,觉得讲的很好,转载过来以供参考.以下转自笨 ...

  8. 用COS实现文件上传

    cos是O'Rrilly公司开发的一款用于HTTP上传文件的OpenSource组件 需要cos.jar,下载地址:http://www.servlets.com/cos/ cos上传文件很简单,比f ...

  9. ActiveMQ-在Centos7下安装和安全配置

    环境准备: JDK1.8 ActiveMQ-5.11 Centos7 1.下载Linux版本的ActiveMQ: $ wget http://apache.fayea.com/activemq/5.1 ...

  10. [转]asp.net core中的View Component

    解读ASP.NET 5 & MVC6系列(14):View Component http://www.cnblogs.com/TomXu/p/4496486.html