一.首先要明白Debug与Trace的区别:

1. Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?

Debug类提供一组帮助调试代码的方法和属性。Trace类提供一组帮助跟踪代码执行的方法和属性,通俗的说就是为在不打断程序的调试或跟踪下,用来记录程序执行的过程。

Debug只在debug状态下会输出,Trace在Release下也会输出,在Release下Debug的内容会消失。

2. Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。

首先以一个表格说明问题:

项目

Debug

Release

条件编译常数

Debug;Trace

Trace

优化代码

False

True

输出路径

bin\Debug

bin\Release

生成调试信息

True

False

Debug模式下生成的程序集为调试版本,未经优化;在bin\debug\目录中有两个文件,除了要生成的.exe或.dll文件外,还有个.pdb文件,这个.pdb文件中就记录了代码中的断点等调试信息;Release模式下不包含调试信息,并对代码进行了优化,\bin\release\目录下只有一个.exe或.dll文件。在项目文件夹下除了bin外,还有个obj目录。编译是分模块编译的,每个模块的编译结果就保存在了obj目录下。最后会合并为一个exe或者dll文件保存到bin之中。因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个obj的目录的作用就是保存这些小块的编译结果,加快编译速度。

二.Trace and Bug Sample

using System;

using System.Diagnostics; //引入Debug类所在命名空间

namespace traceanddebug

{

class TestDebug

{

public static void TestDebugMethod()

{

Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));

//将Debug类输出定向到控制台输出

Debug.AutoFlush = true;

//设置Debug为自动输出,即每次写入后都调用Listeners上调用Flush

Debug.Indent();

//设置缩进

Debug.WriteLine("Debug WriteLine()");

//用Debug输出"Debug WriteLine()"

Console.WriteLine("Console.WriteLine()");

//用Console输出"Console.WriteLine()"

Debug.Unindent();

//取消缩进

//Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));

//将Trace类输出定向到控制台输出

//Trace.AutoFlush = true;

//设置Trace为自动输出,即每次写入后都调用Listeners上调用Flush

Trace.Indent();

//设置缩进

Trace.WriteLine("Trace WriteLine()");

//用Trace输出"Trace WriteLine()"

Console.WriteLine("Console.WriteLine()");

//用Console输出"Console.WriteLine()"

Trace.Unindent();

//取消缩进

Console.Read();

}

}

class Program

{

static void Main(string[] args)

{

TestDebug.TestDebugMethod();

}

}

}

三.  C#将Trace,Debug信息输出到控件上(转)

主要实现方法,继承TraceLinster类,重写构造参数,重写Write和WriteLine方法就可以了,具体代码如下:

public class ControlTraceListener : TraceListener

{

private Control _control;

private StringSendDelegate _invokeWrite;

private delegate void StringSendDelegate(string msg);

public ControlTraceListener(Control target)

{

_control = target;

_invokeWrite = new StringSendDelegate(SendString);

}

public override void Write(string message)

{

_control.Invoke(_invokeWrite, new object[] { message });

}

public override void WriteLine(string message)

{

_control.Invoke(_invokeWrite, new object[] { message + Environment.NewLine });

}

private void SendString(string msg)

{

// No need to lock control as this function will only

// ever be executed from the UI thread

_control.Text += msg;

}

}

java debugtrace_Debug与Trace的区别相关推荐

  1. JAVA 中equals()与==的区别

    原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...

  2. Java NIO与IO的区别和比较

    Java NIO与IO的区别和比较 导读 J2SE1.4以上版本中发布了全新的I/O类库.本文将通过一些实例来简单介绍NIO库提供的一些新特性:非阻塞I/O,字符转换,缓冲以及通道. 一. 介绍NIO ...

  3. java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array

    java中Array和ArrayList区别 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array https://blog.csdn.net/ywjy10280 ...

  4. JAVA CLASSPATH 和PATH的区别 经典

    JAVA CLASSPATH 和PATH的区别 收藏 PATH: 用来指定 java 虚拟机(JVM) 所在在目录,也就是我们最常用的用来编译java源程序的javac.exe 和用来执行 *.cla ...

  5. java 接口与抽象类的区别

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  6. 面试必问一:Java 中 == 和 equals 的区别你知道吗

    面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...

  7. POPTEST老李谈JVM、JRE、JDK、java ee sdk with jdk区别

    POPTEST老李谈JVM.JRE.JDK.java ee sdk with jdk区别 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作 ...

  8. 一文告诉你 Java RMI 和 RPC 的区别

    转载自  一文告诉你 Java RMI 和 RPC 的区别 RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用 ...

  9. Java之Socket与HTTP区别

    转自: Java之Socket与HTTP区别 - 曹刚 - 博客园我们都知道TCP/IP协议共分四层:①链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接 ...

最新文章

  1. 数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳...
  2. 机器学习算法与Python实践之(六)二分k均值聚类
  3. Gentoo源码安装
  4. 马斯克再发声,称人工智能是人类文明面临的最大风险
  5. RabbitMQ 的安装----windows环境
  6. 如何通过 C# 实现对象的变更跟踪 ?
  7. 使用Xmanger登陆aix系统桌面时报桌面服务DT未启动问题
  8. Atitit it软件领域职称评级规定,精深方向。 目录 1. 软件工程师资格证 1 1.1. 法规规范 十大标准,三级五晋制。 1 1.2. 三级制 使用者 原理维修者 制造设计者 1 1.3.
  9. 计算机网络超详细笔记(一):计网概述
  10. IDEA jsp页面代码没有高亮
  11. 服务器:RAID、AHCI、IDE
  12. win11怎么进安全模式,win11进入安全模式的方法
  13. 网络数据爬取实例教程
  14. 吉他演奏中的速度与节拍
  15. 教你制作一张漂亮的城市分布图 比如加油站分布地图
  16. MyBatis:万能Map和模糊查询(狂神)
  17. 从开发者到讲师的心路历程
  18. 阶段式软件研发项目管理工具
  19. Redis的一些知识
  20. 读《了不起的盖兹比》于海生译版 有感

热门文章

  1. ajax交互扩展遇到的问题,ajax autocomplete扩展程序无法正常工作
  2. python %f 怎样指定小数点的位数
  3. RxJava 过滤操作符 take 与 takeLast
  4. 警告 '_'用作标识符, JavaSE8 之后的发行版中可能不支持使用'_'作为标识符
  5. 【网络流24题】飞行员配对方案问题
  6. C# 视频多人脸识别的实现过程
  7. [软件工程]技术规格说明书
  8. 我的Python分析成长之路8
  9. AngularJS 杂项知识点
  10. golang:1.并发编程之互斥锁、读写锁详解