西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发C#.NET → .net中的Debug与Trace的调试心得

.net中的Debug与Trace的调试心得

相关软件相关文章发表评论 来源:西西整理时间:2012/5/30 18:58:15字体大小:A-A+

作者:佚名点击:305次评论:1次标签: Trace

Acme TraceArtv3.9.8 官方最新版
  • 类型:图像处理大小:2.5M语言:中文 评分:10.0
  • 标签:
立即下载

最近在读《.NET开发人员调试策略》,书倒是不错,只是翻译的比较差。不过里面介绍的一些调试的心得还不错,有些收获。

  下面我就总结下本书中关于Debug和Trace的一些应用,算作一种读书笔记

  粗略概括下关于修改BUG的几种方法:

通过调试器调试

    顾名思义就是跟踪源代码进行调试,微软还提供了远程调试的功能。通过源代码的方式调试,我们一般会采用以下的几种方法:

使用Exception

使用MessageBox。

使用#if Debug .. #endif

使用断言调试:其中有Debug.Assert和Trace.Assert两种,Debug只在Debug模式下有效,Trace则都有效。断言模式还有个优点,可以直接点击按钮重试,选择调试器进行调试。

当然还有通过堆栈跟踪或者其他的一些特殊手段等等。

   .net所提供的断言调试相当强大,建议大家采用该方法。具体应用请自行寻找资料。 

   msdn:

      Debug.Assert 方法

      Trace.Assert 方法

通过日志调试

   想必大家肯定遇到过,有些BUG在客户那边会出现,但是本机就是模拟不出来。而客户要嘛远隔万里,要嘛就是不允许安装远程调试。

   在这种情况下,就可以通过日志调试,也就是将一些重要的信息写到文本中,当出现问题或者BUG可以通过查看日志文件来查找原因。

   记录日志文件,就是写文件的操作,可以有很多种方法。

   此处介绍下通过.net提供的侦听器与开关记录日志。   

   1.直接创建

1         static void Main(string[] args)
2         {
3             bool someBool = true;
4             Trace.Listeners.Add(new TextWriterTraceListener(@"C:\MyListener.log"));
5             Trace.AutoFlush = true;//每次写入日志后是否都将其保存到磁盘中
6
7             Trace.WriteLine(DateTime.Now.ToString() + "--Enter function LogTest");
8             Trace.Indent(); //缩进+1
9             Trace.WriteLine("This is indented once");
10             Trace.Indent();
11             Trace.WriteLineIf(someBool, "Only written if someBool is true");
12             Trace.Unindent(); //缩进-1
13             Trace.Unindent();
14             Trace.WriteLine("Leave function LogTest");
15         }

日志内容:

2012-05-30 14:11:41--Enter function LogTest
    This is indented once
        Only written if someBool is true
Leave function LogTest

   2.通过配置文件创建

App.config

1         static void Main(string[] args)
2         {
3             TraceSwitch ts = new TraceSwitch("MySwitch", "descrption");//开关
4             Trace.WriteLine(DateTime.Now.ToString() + "--Enter function LogTest");
5             Trace.Indent(); //缩进+1
6             Trace.WriteLine("This is indented once");
7             Trace.Indent();
8             Trace.WriteLineIf(ts.TraceInfo, "MySwitch TraceInfo is true!");
9             Trace.Unindent(); //缩进-1
10             Trace.Unindent();
11             Trace.WriteLine("Leave function LogTest");
12         }

日志内容:

2012-05-30 14:19:43--Enter function LogTest
  This is indented once
    MySwitch TraceInfo is true!
Leave function LogTest

   3.windows事件日志

   通过Trace或者Debug中的EventLogTraceListener即可写入事件日志。

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(1)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)