Dot Net的调试 - 2
来源:互联网 发布:生成器 python 编辑:程序博客网 时间:2024/06/05 11:09
Fail方法不能阻止应用程序运行,他们仅仅输出错误信息。Write和WriteLine方法写入一个消息。他们不同之处仅仅在于后者输出执行后再输出一行。最后,Flush方法刷新缓存。Flush方法对跟踪信息输出的设备有作用(例如,流)。你可以使用自动刷新—每个信息后都自动刷新侦听者。可以在配置文件里面配置:
<configuration>
<stream.diagnostics>
<trace autoflush = “false” />
</stream.diagnostics>
</configuration>
正如你看到的,如果你创建自己的倾听者,需要至少实现write(string)和writeline(string)方法(这些方法是抽象方法)。
微软提供三种跟踪侦听者:DefaultTraceListener,EventLogTraceListener和TextWriteTraceLister.。第一个侦听者有缺省的方法(如果应用程序在命令行的环境下运行,那么输出信息到控制台。如果应用程序在调试情况下,输出到窗口)。第二个侦听者输出信息到指定事件日志中(基于nt技术—winnt,2k,xp或者.Net)。第三个倾听者输出文本到流中。
活动倾听者列表可以在编程中设置或者在配置文件中。缺省包括DefaultTraceListener.
编程改变活动倾听者列表,要管理倾听者集合(通过添加和删除方法)。配置文件中管理倾听者,你要用下边的语法:
<configuration>
<system.diagnostics>
<trace autoflust=”false” indentsize = 4>
<listeners>
<add name=”myListener” type=”System.Dianostics.TextWriterTraceListener, system”
initializeData = “c:MyListener.log”/>
<remove type = “System.Diagnostics.DefaultTraceListener,System”/>
</listeners>
</trace>
</system.dianostics>
</configuration>
InitializeDat参数是传递到构造器的的字符串参数(指定EventLogTraceListener侦听者事件日志)。
侦听者很熟悉创建应用程序使用侦听者输出跟踪信息。代码很简单:
//Trace listeners demo
//
//purpose:To demonstrate how to use listeners
using System;
using System.Diagnostics;
namespace Assertion
{
class Application
{
[STAThread]
static void Main(string[] args)
{
Trace.WriteLine(“Calling WriteLine method”, “Trace Listeners demo”);
Trace.Flush();
}
}
}
这些代码还不够,我们必须创建一个配置文件来设置侦听者:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove type="System.Diagnostics.DefaultTraceListener"/>
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener"
initializeData="myListener.log" />
<add name="myListenerEventLog" type="System.Diagnostics.EventLogTraceListener"
initializeData="Application" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
这个配置文件删除了缺省侦听者加入两个自定义侦听者:第一个输出信息到文本文件,第二个输出到事件日志中。对于第一个侦听者initializeData属性指定输出数据的文件,第二侦听者记录事件到事件日志。
运行程序。检查第一个侦听者,可以看到myListener.log文件,它包含以下信息:Tracing listeners Demo:Calling WriteLine Method
第一个侦听者把信息写入文本文件中。察看第二个。打开微软控制台在事件视图中浏览应用程序事件日志(这个就是我们在配置文件中指定的)。在这里可以看到我们应用程序的事件信息。更多的可能,在这个列表最上边。如果你双击,可以看到其中的内容。我们发现如下信息:
是输出信息更加容易阅读:
有时候应用程序很复杂,为了容易理解可以格式化跟踪信息。使输出信息更加漂亮,可以使用缩排,看下面的简单代码:
public void Callee()
{
Trace.WrteLine(“Callee started”);
……//Some internal logic
Trace.WriteLine(“Initializing Buffer”);
……//Some extra internal login
Trace.WriteLine(“Exiting Callee”);
}
public void Caller()
{
Trace.Write(“Caller Called”);
…..//Some external logic
Callee();
…..//Some extral Logic
Trace.WriteLine(“Initializing Buffer”);
Trace.Write(“Exiting Caller”);
}
输出信息如下:
Caller called
Callee stared
Initializing buffer
Exiting Callee
Initializing buffer
Exiting Caller
如果方法执行前后没有显示信息,我们将被这些拷贝的初始化缓存信息所迷惑。除了信息显示不清楚。为了避免不明确,我们使用Trace类支持的缩进功能。修改的代码,使用缩进:
public void Callee()
{
Trace.indent();
Trace.WriteLine(“Callee started”);
…..//some internal logic
Trace.WriteLine(“Initializing Buffer”);
….//Some extra internal logic
Trace.WriteLine(“Exiting Callee”);
Trace.Unindent();
}
public void Caller()
{
Trace.Write(“Caller called”);
….//Some External Logic
Callee();
….//Some Extra Login
Trace.WriteLine(“Initiallizing buffer”);
Trace.Write(“Exiting Caller”);
}
输出信息如下:
Caller called
Callee started
Initializing buffer
Exiting Callee
Initializing buffer
Exiting Caller
正如你看到的,callee方法输出缩进,很容易分开不同方法的信息。可以调用Indent和Unident方法,达到分离信息的目的。
在配置文件中修改跟踪配置:
<configuration>
<system.diagnostics>
<trace indentsize = “3” / >
</system.diagnostics>
</configuration>
- Dot Net的调试 - 2
- Dot Net的调试 - 2
- Dot Net的调试 - 2
- Dot Net的调试 - 1
- Dot Net的调试 - 3
- Dot Net的调试 - 1
- Dot Net的调试 - 1
- Java & Dot Net的遐思
- Dot Net Framework的发展过程
- FIT FOR DOT NET(2)----
- 学习Dot Net的资料汇总
- Dot net 正则表达式的应用
- 梦幻Dot Net的代码生成器
- DOT.NET 中常用的对象
- transaction in dot net
- Dot Net 工具介绍
- dot net tool URL
- FIT For Dot NET
- 用异步方式解析域名
- 从数据集更新数据库
- VB.NET特性
- Sybase数据库连接问题
- 我国网民数达2.21亿人 居全球首位
- Dot Net的调试 - 2
- c#中的接口
- C#—非对称加密:加密文件
- 宏内核 VS 微内核
- 为你的Blog打造个性日历控件
- .net 框架程序设计 读书笔记(一)---.net 平台构成
- 如何将Silverlight 2 Beta SDK的帮助文档整合到VS2008文档中
- 在DataGrid中使用下拉列表框和设置焦点
- 创建可编辑的xml文档(之二) 过滤xml 数据