.Net中的Debug模式和Release模式
1、Debug模式和Release模式
在vs中,运行程序有两种模式:Debug和Release
在bin目录下也会生成对应的文件夹,用于存放生成的dll等文件,这两种模式的区别如下:
Debug:用全部符号调试信息编译,不进行优化(优化会使调试复杂化,因为源代码和生成的指令间的关系更加复杂)。
Release:被完全优化,不包含任何符号调试信息。调试信息可在单独的pdb文件中生成
上面两种模式生成的dll的文件大小不一样
Debug模式:Release模式:
(因为进行了符号的优化)
2、项目文件中下的obj目录的作用
在项目文件夹下除了bin外,还有个obj目录,由于编译是分模块编译的,每个模块的编译结果就保存在了obj目录下。最后会合并为一个exe或者dll文件保存到bin之中。因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个obj的目录的作用就是保存这些小块的编译结果,加快编译速度。
3、Bin目录的pdb文件
Visual Studio 调试器使用 EXE 或 DLL 文件中的 PDB 路径查找 project.pdb 文件。 如果调试器无法在该位置找到 PDB 文件,或者该路径无效,调试器将先搜索包含 EXE 的路径,然后搜索“选项”对话框中指定的符号路径。 该路径通常是“符号”节点中的“调试”文件夹。 如果调试器无法找到 .PDB 文件,则显示“查找符号”对话框,这将允许您搜索符号或向搜索路径添加其他位置。
PDB
英文全称:Program Database File
中文全称:程序数据库 文件
程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。 在使用 /debug 生成时,会创建一个 PDB 文件。 可以使用 /debug:full 或 /debug:pdbonly 生成应用程序。 使用 /debug:full 生成将产生可调试的代码。 使用 /debug:pdbonly 生成将产生 PDB,但是不会产生通知 JIT 编译器调试信息可用的 DebuggableAttribute。 如果您想为不希望其成为可调试的发布版本生成 PDB,请使用 /debug:pdbonly。
Debug里的pdb是full,保存着调试和项目状态信息、有断言、堆栈检查等代码。Release 里的pdb是pdb-only,基本上:出什么错了+错误在哪行。
重要事项
调试器只会为二进制文件加载与该二进制文件生成之时所创建的 PDB 完全相符的 PDB。 就是说,该 PDB 必须是原 PDB 或其副本。 因为编译器在创建二进制文件时会考虑多种因素,所以,即使代码自身没有变化,二进制文件的实际布局也可能会有变化。
本文来源自:http://www.cnblogs.com/Interkey/p/3554588.html
.Net中的Debug模式和Release模式的更多相关文章
- 【C++】Debug模式和Release模式的区别
VS中的程序有两种编译模式:Debug模式和Release模式. Debug通常称为调试版本,通过一系列编译选项的配合,编译结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能 ...
- Xcode中使用debug模式和release模式
在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程.但是一个发布的程序,里面带有太多的NSLog输 ...
- .NET中Debug模式与Release模式
Visual Studio 项目对程序的发布和调试版本分别有单独的配置.顾名思义,生成调试版本的目的是用于调试,而生成发布版本的目的是用于版本的最终分发. 如果在 Visual Studio 中创建程 ...
- VS中Debug模式和Release模式的区别
一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程 ...
- 使用Xcode-debug模式和release模式
在开发过程中,我们常常须要用到NSLog输出一些信息,甚至有的开发过程.必须在控制台查看输出,有经验的程序猿通过控制台输出就能知道整个数据交互的一个流程. 可是一个公布的程序,里面带有太多的NSLog ...
- .NET中Debug模式与Release模式差别
Debug里的PDB是full,保存着调试和项目状态信息.有断言.堆栈检查等代码.Release 里的PDB是pdb-only,基本上:出什么错了+错误在哪行. 因为很多人把PDB理解成:调试文件.P ...
- IOS中(Xcode) DEBUG模式(RELEASE模式)控制NSLog输出,NSLog两种不同情况的输出方式
[新年新气象,2016/01/04] 俺们在开发IOS程序过程中,经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程 ...
- OpenCV:Debug和Release模式 && 静态和动态编译
1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...
- VS2015 release模式下进行debug调试
有时候软件发布,又不得不调试其中的某个dll模块, 这时候就需要在发布的release版本的软件中来调试其中的dll模块了. vs2015设置: 1.Release模式下右键工作属性,选择C/C++, ...
随机推荐
- SQL SERVER安装序列号
MICROSOFT SQL SERVER 2012 DEVELOPER 版 序列号:YQWTX-G8T4R-QW4XX-BVH62-GP68Y MICROSOFT SQL SERVER 2012 EN ...
- C++设计模式-Factory工厂模式
Factory1.定义创建对象的接口,封装对象的创建2.将实际创建工作延迟到子类中,例如,类A中药使用类B,B是抽象父类,但是在类A中不知道具体要实例化哪一个B的子类,但是在类A的子类D中是可以知道的 ...
- pgadmin中的备份功能消失的原因和找回方法
pgadmin在正常情况下,在左侧的[对象浏览器]中选中数据库.模式或者表时,右键会出现[备份]和[恢复]的选项(除早期不支持该功能的版本外). 如: 当然,有时候有人会发现,当你想要用这些备份还原功 ...
- Python自动化 【第一篇】:Python简介和入门
Python简介: 一.什么是python Python是一门动态解释性的强类型定义语言. pythonde 特点:“优雅”.“明确”.“简单”. 二.Python由来 python的创始人为吉多·范 ...
- php关闭错误提示
今天调试phalcon的一个接口时候碰到如下提示: Deprecated: mongogo::mongogo(): The Mongo class is deprecated, please use ...
- PHP性能优化简述
先谢慕课网,这里只做理论简述/** * PHP性能优化 * * 1.问题分析 * PHP语法使用不正确 * PHP不擅长的事 * PHP连接的服务不给力 * PHP自身短板 * 其它原因 * 2.PH ...
- VC++ 中简单操作MP3音乐的方法,小结
#include <windows.h> #include <stdio.h> #include <mmsystem.h> #include <shellap ...
- 使用阿里Docker镜像加速器加速
在阿里开发者平台注册开发者账号 https://dev.aliyun.com/search.html 注册之后可以访问Docker镜像服务 https://cr.console.aliyun.com/ ...
- 安装和部署ZkeaCMS
ZkeaCMS是基于EasyFrameWork,使用ASP.NET MVC4开发的开源CMS. ZkeaCMS一个内容管理软件(网站).ZkeaCMS不仅只是管理内容,更是重新定义了布局.页面和组件, ...
- Spring aop——前置增强和后置增强 使用注解Aspect和非侵入式配置
AspectJ是一个面向切面的框架,它扩展了java语言,定义了AOP语法,能够在编译期提供代码的织入,所以它有一个专门的编译器用来生成遵守字节码字节编码规范的Class文件 确保使用jdk为5.0以 ...