debug,trace,release项目配置区别
Debug模式是用来调试用的,它生成的执行文件中含有大量调试信息,所以很大;
Release模式生成的执行文件消除了这些调试信息,可用来作为成品发布
Debug只在debug状态下会输出,Trace在release下也会输出,在release下Debug的内容会消失
Debug类提供一组帮助调试代码的方法和属性。Trace类提供一组帮助跟踪代码执行的方法和属性,通俗的说就是为在不打断程序的调试或跟踪下,用来记录程序执行的过程。两个类都是密封类,不能被继承。 Debug类的例子(代码A): TextWriterTraceListener myListener=new TextWriterTraceListener(“F:""DebugLog.txt”); Debug.Listeners.Add(myListener); Debug.WriteLine("这是调试"); Debug.Flush(); Listener.Flush(); Trace类的例子(代码B): TextWriterTraceListener myListener=new TextWriterTraceListener("F:""TraceLog.txt"); Trace.Listeners.Add(Listener); Trace.WriteLine("这是跟踪"); Trace.Flush(); Listener.Flush(); 这两个类有什么区别呢?我们可以通过选择项目的调试方式为“Debug”:用代码A测试,会发现F:"DebugLog.txt中有内容,为“这是调试”,如果用代码B测试,会发现F:"TraceLog.txt中有内容,为“这是跟踪”。我们也可以通过选择项目的调试方式为“Release”:同样用A,B两段代码测试,会发现,F:"DebugLog.txt中是没有内容的,但F:"TraceLog.txt中还是“这是跟踪”的文字。这里说明了一点,Debug类的内容输出,只在Debug模式下生成的exe中起作用,如果改成Release模式下生成的exe,就失去了作用,Trace类则都起作用 用代码A测试,会发现F:"DebugLog.txt中有内容,为“这是调试”,如果用代码B测试,会发现F:"TraceLog.txt中有内容,为“这是跟踪”。现在,我们设置程序为发布方式,如下图所示 同样用A,B两段代码测试,会发现,F:"DebugLog.txt中是没有内容的,但F:"TraceLog.txt中还是“这是跟踪”的文字。这里说明了一点,Debug类的内容输出,只在Debug模式下生成的exe中起作用,如果改成Release模式下生成的exe,就失去了作用,Trace类则都起作用。
Debug上的大多数诊断函数需要当前项目定义了"DEBUG"预定义变量才能够使用。否则,将不执行任何操作。 Trace检查的预定义变量是"TRACE"。 默认情况下,项目的Debug配置会定义DEBUG和TRACE两个预定义常量。但是Release配置仅仅定义了TRACE常量。这就是为什么你发现Debug.WriteLine在Release模式下没有任何输出。相关细节,你可以查看一下MSDN中关于ConditionalAttribute的描述。 修改这些配置,可以通过Project -> XXXXX Properties -> Build -> Define DEBUG constant 启用和禁用DEBUG或TRACE常量
debug,trace,release项目配置区别的更多相关文章
- Debug和Release之本质区别
转自Debug和Release之本质区别 Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发 ...
- 探讨C++ 变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别
探讨C++ 变量生命周期.栈分配方式.类内存布局.Debug和Release程序的区别(一) 今天看博客园的文章,发现博问栏目中有一个网友的问题挺有趣的,就点进去看了下,标题是“C++生存期问题”,给 ...
- 项目发布Debug和Release版的区别
一.Debug和Release的区别 Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试 ...
- VS2008 Debug与Release的本质区别(转)
如何设置:工具栏“生成”→“配置管理器”→“活动解决方案配置” 对于VS2008的初次使用者来说,常会遇到的编译问题时,Debug版本运行正常,但在Release版本则不稳定或无法运行.以下是对Deb ...
- 关于Debug和Release之本质区别的讨论
一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化 ...
- Debug与Release版本的区别详解
原文链接 Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug和Release的行为完全颠 ...
- Debug与Release版本的区别
Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动.如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来.当 ...
- vs中debug和release版本的区别(转)
vs中的程序有debug和release两个版本,Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力.而Rel ...
- 在用VC编译下debug和release的什么区别
DEBUG和RELEASE 版本差异及调试相关问题:. 内存分配问题 1. 变量未初始化.下面的程序在debug中运行的很好. thing * search(thin ...
随机推荐
- select multiple images in Android Gallery
http://stackoverflow.com/questions/18520976/all-properties-of-intent-putextra-to-crop-image-in-andro ...
- (spring-第15回【IoC基础篇】)容器事件
五个人在报社订阅了报纸.报社一旦有了新报纸,就派员工分别送到这五个人手里.在这个例子中,“报纸”就是事件,“报社”就是广播器,五个订阅者就是监听器.广播器收到事件,把事件传给监听器,监听器对事件做一些 ...
- 树莓派安装kali后的简单配置
树莓派可以说是极客的最爱,可以根据不同的需求去做定制. 前文<使用树莓派和kali Linux打造便携式渗透套件>讲了一些使用树莓派的基础,主要侧重于将树莓派当作一个物理后门使用.我则更喜 ...
- 数组Mex
题目描述 请设计一个高效算法,查找数组中未出现的最小正整数. 给定一个整数数组A和数组的大小n,请返回数组中未出现的最小正整数.保证数组大小小于等于500. 测试样例: [-1,2,3,4],4 返回 ...
- 作业5-需求分析(EX:南通大学成绩录入系统)
产品利益相关者: 用户:南通大学各任课老师. 顾客:南通大学(教务处) 工程师:系统的开发,测试,维护,推广人员等 竞争性需求分析: N(需求) A(做法) B(好处) C(竞争) D(推广) 基础性 ...
- Smart210学习记录-------linux驱动中断
Linux中断 Linux 的中断处理分为两个半部,顶半部处理紧急的硬件操作,底半部处理不紧急的耗时操作.tasklet 和工作队列都是调度中断底半部的良好机制,tasklet 基于软中断实现.内核定 ...
- c++ 字符窜切割
std::vector<std::string> Tools::SplitStr(const char* baseStr, const char* rule) { log("ba ...
- win7共享wifi
已管理员身份打开 命令提示符 netsh wlan set hostednetwork mode=allow ssid=abcde key=123456 netsh wlan start hosted ...
- maven为不同环境打包(hibernate)-超越昨天的自己系列(6)
超越昨天的自己系列(6) 使用ibatis开发中,耗在dao层的开发时间,调试时间,差错时间,以及适应修改需求的时间太长,导致项目看起来就添删改查,却特别费力. 在项目性能要求不高的情况下,开始寻 ...
- hdu 4252 A Famous City
题意:一张相片上的很多建筑相互遮住了,根据高低不同就在相片上把一座高楼的可见部分作为一个矩形,并用数字描述其高度,若一张相片上的两个建筑群中间有空地,高度则为0;求最少有多少个建筑; 分析: 输入的0 ...