zoukankan      html  css  js  c++  java
  • Debug和Trace使用小记

    Debug和Trace?

    Debug和Trace这里指.Net中System.Diagnostics(System程序集)中的Debug和Trace工具类。

    如何使用?

    Debug和Trace两个类都有很多静态方法和属性可以使用,并且Debug和Trace大部分方法都不仅名称一样,用法也很相似。

    如:

    1. Write系列和WriteLine系列方法,同TextWriter中一样,是用作输出的。要注意的是Debug中有个Print方法,它和WriteLine的功能是一样的,而不是和Write一样。WriteIf系列函数只是加了个 判断。
    2. Indent/Unindent这样个方法和IndentLevel, IndentSize这两个属性,它们是控制缩进的。
    3. AutoFlush属性是控制刷新的,为true是每次调用Write都会刷新。
    4. Listeners属性,类型是TracerListenersCollection, 可以通过这个属性来添加Debug/Trace输出的监听者。
    5. Fail方法,指示出错信息。一般会弹出一个错误对话框:

    关于Trace

    Trace翻译为跟踪,Trace类一般是用于跟踪应用程序的相关信息。Trace类中也有TraceInformation/TraceWarning/TraceError这样的方法,分别用于输出不同程度的跟踪信息。

    Debug算是Trace的一种特殊应用吧——专用于DEBUG版的Trace.

    关于TraceListener

    TraceListener是一个抽象类,用于监听输出的跟踪信息,一般可以用它的子类,如:

    1. DefaultTracerListener, 一般会使用kernel32.dll中的OutputDebugString来输出;
    2. TextWriterTracerListener, 输出到给定的Stream或TextWriter或文件;
    3. EventLogTracerListener, 输出到日志(EventLog);

    还有其他如WebPageTraceListener等,当然也可以自己实现一个TraceListener.

    关于Trace.Listeners/Debug.Listeners

    操作这Debug类的Listeners属性和Trace类的Listeners属性,实际上效果是一样的。就实现而言,它们都是简单的对TraceInternal.Listeners封装了一下,实现代码用reflector查看为:

    1 public static TraceListenerCollection Listeners
    2 {
    3 get
    4 {
    5 return TraceInternal.Listeners;
    6 }
    7 }

    关于Debug/Trace的效率

    Debug和Trace所有的公有方法都有[Conditional("DEBUG")]或[Conditional("TRACE")]属性(Attribute),所以只要编译时不定义DEBUG/TRACE宏,Debug/Trace的相应方法都不会被调用。

    VS中默认配置中Debug配置下定义了DEBUG和TRACE,Release配置下定义了TRACE。

    在调试时VS会自动添加一个TraceListener,输出到输出窗口(Output):



    测试代码下载(TestDebugTrace.rar)

  • 相关阅读:
    原型链加强练习
    Javascript中的原型链,__proto__和prototype等问题总结
    HTTPS 到底加密了什么?
    PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘
    取代 FlashP2P,H5P2P 将成为 WebP2P 主流
    低延时的P2P HLS直播技术实践
    深挖“窄带高清”的实现原理
    【省带宽、压成本专题】爱奇艺第一季度又烧了11个亿元,什么时候是个头?
    【省带宽、压成本专题】深入解析 H.265 编码模式,带你了解 Apple 全面推进 H.265 的原因
    让互联网更快,Server Push 特性及开启方式详解
  • 原文地址:https://www.cnblogs.com/pcy0/p/about_debug_trace_in_dotNet.html
Copyright © 2011-2022 走看看