Dot Net的调试 - 2

原创 2004年05月28日 10:37:00

        

       Fail方法不能阻止应用程序运行,他们仅仅输出错误信息。WriteWriteLine方法写入一个消息。他们不同之处仅仅在于后者输出执行后再输出一行。最后,Flush方法刷新缓存。Flush方法对跟踪信息输出的设备有作用(例如,流)。你可以使用自动刷新每个信息后都自动刷新侦听者。可以在配置文件里面配置:

<configuration>

        <stream.diagnostics>

                   <trace autoflush = “false” />

         </stream.diagnostics>

</configuration>

 

正如你看到的,如果你创建自己的倾听者,需要至少实现write(string)writeline(string)方法(这些方法是抽象方法)。

微软提供三种跟踪侦听者:DefaultTraceListener,EventLogTraceListenerTextWriteTraceLister.。第一个侦听者有缺省的方法(如果应用程序在命令行的环境下运行,那么输出信息到控制台。如果应用程序在调试情况下,输出到窗口)。第二个侦听者输出信息到指定事件日志中(基于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方法输出缩进,很容易分开不同方法的信息。可以调用IndentUnident方法,达到分离信息的目的。

在配置文件中修改跟踪配置:

<configuration>

       <system.diagnostics>

              <trace indentsize = “3” / >

       </system.diagnostics>

</configuration>

 

doT.js详细使用介绍

官网: http://olado.github.io doT.js详细使用介绍 使用方法: {{= }} for interpolation {{ }} for evaluation...
  • chuyuqing
  • chuyuqing
  • 2015年07月07日 22:43
  • 16838

.Net WebApi接口调试之Swagger集成详解

引:以前没有写博的习惯,后来 在网上看到有些问题被一些刚入行的同学问来问去没有完整的教程供他们参考,决定以后也把自己的一些经验分享到网上,希望能帮助其他同学的同时,更多的与大家交流!有不对的地方还请多...
  • qq_31766265
  • qq_31766265
  • 2016年07月19日 09:07
  • 5740

.NET应用程序调试—原理、工具、方法

阅读目录: 1.背景介绍2.基本原理(Windows调试工具箱、.NET调试扩展SOS.DLL、SOSEX.DLL) 2.1.Windows调试工具箱2.2..NET调试扩展包,SOS.D...
  • wangqingpei557
  • wangqingpei557
  • 2014年10月15日 22:04
  • 4508

[DOT NET框架程序设计-中文版][PDF].part2

  • 2010年05月25日 15:24
  • 8.17MB
  • 下载

dot NET And J2EE Interoperability 2004.chm

  • 2009年01月09日 09:46
  • 729KB
  • 下载

Office编程在dot Net环境中总结(Excel篇)

文章的使用范围    运行环境 .net Framework 1.1 ,Excel 2003    开发语言:C#   目录 1.0简要说明     2.0 Excel 编程模型的说明。 ...
  • ranbolwb
  • ranbolwb
  • 2012年04月18日 15:41
  • 875

dot Net 线程相关问题

把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论 目录 基础篇怎样创建一个线程受托管的线程与 Windows线程前台线程与后台线程名为BeginXXX和...
  • metasearch
  • metasearch
  • 2011年04月02日 13:06
  • 566

Dot NET设计模式—反射工厂

Dot NET设计模式—反射工厂  1.概述         如果采用传统方式实现了简单工厂、工厂方法和抽象工厂在有些场合下如此处理,代码会变得冗余并且难以维护。         假设我们需要创...
  • lidongya1181
  • lidongya1181
  • 2016年06月29日 08:29
  • 332

dot net npoi

前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C...
  • zcwforali
  • zcwforali
  • 2017年03月03日 14:53
  • 425

最强Dot Net教程资料集合

电驴资源 下面是用户共享的文件列表,安装电驴后,您可以点击这些文件名进行下载 [最强Dot.Net教程资料集合].LearnKey.Asp.Net-Part1CD1.ISO...
  • bhdzx
  • bhdzx
  • 2012年07月25日 11:05
  • 532
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Dot Net的调试 - 2
举报原因:
原因补充:

(最多只允许输入30个字)