C# trace debug TraceListener调试信息详解
在C#编程中,可能要碰到把调试信息输出的问题,我们可以自己把信息显示在某个控件上,但是MS自己提供了一套机制帮助我们输出一些调试信息,这些信息有助于我们判断程序的走向,不用自己再去额外写调试代码了。
一般调试的时候有两个很重要的类Trace, Debug,
Trace帮助我们跟踪代码用,Debug帮助我们调试代码用。是否启用,取决于我们的设置:
比如这个只定义了Trace常量,表示只启用了Trace类。
先说说Trace类的结构(Debug类一样):
Trace:
Listeners:这是个TraceListener的集合,这个是最关键的。
AutoFlush:自动刷新。其实设置的是TraceInternal,这个是个静态类,也比较关键,后面介绍。
Flush:刷新,调用的也是TraceInternal.Flush方法。
WriteLine,Write:写信息的方法,调用的是TraceInternal.Write(),WriteLine()。
接下来再介绍TraceInternal这个静态类:
Listeners:这个跟Trace里面的Listeners是一样的。
AutoFlush:自动刷新
Flush():刷新的方法,这里调用每个Listener对象的Flush。
Write():写方法,调用的是每个Listener对象的Write方法,如果Auto为真,就调用Flush()方法。
再介绍TraceListener,这个类:
Flush():刷新方法。
Write():写方法。
这个类有几个派生类:
1)TextWriterTraceListener.
Write():写方法。调用的是TextWriter的Writer方法写文本。
Flush(): 刷新方法。调用的是TextWriter的Flush方法刷新。
TextWriter, 内部对象,写文本对象。
2)EventLogTraceListener. 事件日志监听。
EventLog:事件日志对象。
Write():写方法。调用的是EventLog的WriterEntry方法写信息。
3)DefaultTraceListener,缺省的监听。
4)自定义的TraceListener.
到这里我们可以先理一理思路,我们程序在运行的时候,假设设置了Trace常量,假设调用了Trace.WriteLine(), 相当于对Trace里面的监听集合中的每一个监听器进行输出,也就是说输出到每一个TraceListener里面。但是假设只调用某一个TraceListener的WriteLine(),那么就不会输出到其他TraceListener里面。另外还有一个属性要关注,那就是Flush(), 因为TraceListener没有AutoFlush属性,所以我们如果要保证信息输出到TraceListener指定的地方,就要调用Flush方法,比如TextWriterTraceListener这个类,如果只是WriteLine,如果不调用Flush方法,可能有缓存的数据就没有输出到文本。
我这里把这个思路理顺了下,具体的例子就不准备了。
C# trace debug TraceListener调试信息详解的更多相关文章
- IntelliJ IDEA 2020.1.1 x64 Debug 断点调试模式详解
前言 对于初入职场的萌新们来说,很多都还不会 Debug 断点模式.记得我刚写代码的时候,也是通过 System.out.println() 一行一行的把变量打印出来看.其实强大的编辑器已经帮我们做好 ...
- redis.conf配置信息详解
redis.conf配置信息详解 配置文件 # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =& ...
- Linux的ifconfig看到的信息详解
Linux的ifconfig看到的信息详解 [root@localhost ~]# ifconfig eth0 Link encap:Ethernet HWaddr :::BF:: inet addr ...
- C# Debug和Trace:输出调试信息
在 C# 语言中允许在程序运行时输出程序的调试信息,类似于使用 Console.WriteLine 的方式向控制台输出信息.所谓调试信息是程序员在程序运行时需要获取的程序运行的过程,以便程序员更好地解 ...
- adb调试命令详解-2016.02.01
adb(Android Debug Bridge),调试桥可以让设备的调试监测过程在远端进行,而不必在运行实际运行应用的设备上,方便调试的输出. 1 命令详解 a 查看帮助信息 adb ...
- Windbg调试命令详解
作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe.ntsd. ...
- Windbg调试命令详解(1)
转载注明>> [作者:张佩][镜像:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是 ...
- IDEA中 Debug 调试工具(图文详解)
DEBUG调试工具 一. Debug 调试工具 1. Debug的作用 2. Debug的使用步骤 3. IDEA中Debug按钮详解 总结 参考博文:https://blog.csdn.net/qq ...
- IE=edge,chrome=1的META信息详解
这几天在玩 HTML5 ★ Boilerplate,注意到meta信息中有这么一句: 复制代码 代码如下: <meta http-equiv="X-UA-Compatible" ...
随机推荐
- Git初体验
http://www.cnblogs.com/yejiurui/archive/2013/07/29/3223153.html
- 基于百度定位SDK的定位服务的实现
转载请标明出处:http://blog.csdn.net/android_ls/article/details/10179013 一.定位模块的需求:我们想知道使用我们应用的用户的大概位置,每隔五分钟 ...
- 【HDOJ】3085 Nightmare Ⅱ
双向BFS.注意,任何一个点出队后,首先需要考虑ghost. /* 3085 */ #include <iostream> #include <queue> #include ...
- Combination Sum III —— LeetCode
Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...
- 开源库CImg 数据格式存储之二(RGB 顺序)
在上一篇博客中已经初步说明了GDI和CImg数据的存储格式感谢博友 Imageshop 评论说明 CImg的说明文档中已有详细说明(详见上篇博客说明) CImg的数据格式确实是RRRGGGBBB顺序存 ...
- vim下缩进及高亮设置
1.配置文件的位置 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效.而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc” ...
- 《University Calculus》-chaper13-多重积分-二重积分的引入
这一章节我们开始对多重积分的研究. 在此之前,我们首先来回忆起积分的过程,在平面中,面临求解不规则图形的面积(常叫曲边梯形)的时候,我们可以采取建立直角坐标系,然后通过得到不规则图形边界的函数表达式f ...
- poj 1236强连通图缩点
题目链接:http://poj.org/problem?id=1236 #include <cstdio> #include <cmath> #include <algo ...
- Jenkins 七: 部署到Tomcat
在build.xml定义了打包target之后,我们可以将打包生成的war文件直接部署到tomcat. 1. 建立Tomcat用户. 打开Tomcat安装路径下的 conf/tomcat-users. ...
- Searching the String - ZOJ 3228(ac自动机)
题目大意:首先给你一下母串,长度不超过10^5,然后有 N(10^5) 次查询,每次查询有两种命令,0或者1,然后加一个子串,询问母串里面有多少个子串,0表示可以重复,1表示不可以重复. 分析:发 ...