使用.net中的Debug与Trace加强调试能力(SamWang)
来源:互联网 发布:淘宝刷好评兼职交会费 编辑:程序博客网 时间:2024/05/29 13:39
粗略概括下关于修改BUG的几种方法:
- 通过调试器调试
顾名思义就是跟踪源代码进行调试,微软还提供了远程调试的功能。通过源代码的方式调试,我们一般会采用以下的几种方法:
- 使用Exception
- 使用MessageBox。
- 使用#if Debug .. #endif
- 使用断言调试:其中有Debug.Assert和Trace.Assert两种,Debug只在Debug模式下有效,Trace则都有效。断言模式还有个优点,可以直接点击按钮重试,选择调试器进行调试。
- 当然还有通过堆栈跟踪或者其他的一些特殊手段等等。
.net所提供的断言调试相当强大,建议大家采用该方法。具体应用请自行寻找资料。
msdn:
Debug.Assert 方法
Trace.Assert 方法
- 通过日志调试
想必大家肯定遇到过,有些BUG在客户那边会出现,但是本机就是模拟不出来。而客户要嘛远隔万里,要嘛就是不允许安装远程调试。
在这种情况下,就可以通过日志调试,也就是将一些重要的信息写到文本中,当出现问题或者BUG可以通过查看日志文件来查找原因。
记录日志文件,就是写文件的操作,可以有很多种方法。
此处介绍下通过.net提供的侦听器与开关记录日志。
1.直接创建
static void Main(string[] args) { bool someBool = true; Trace.Listeners.Add(new TextWriterTraceListener(@"C:\MyListener.log")); Trace.AutoFlush = true;//每次写入日志后是否都将其保存到磁盘中 Trace.WriteLine(DateTime.Now.ToString() + "--Enter function LogTest"); Trace.Indent(); //缩进+1 Trace.WriteLine("This is indented once"); Trace.Indent(); Trace.WriteLineIf(someBool, "Only written if someBool is true"); Trace.Unindent(); //缩进-1 Trace.Unindent(); Trace.WriteLine("Leave function LogTest"); }
日志内容:
2012-05-30 14:11:41--Enter function LogTest This is indented once Only written if someBool is trueLeave function LogTest
2.通过配置文件创建
App.config <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <trace autoflush="true" indentsize="2"> <listeners> <add name ="myListener" type ="System.Diagnostics.TextWriterTraceListener" initializeData ="C:\\MyListener.log"/> </listeners> </trace> <switches> <!--TraceLevel.Off = 0; 从不做任何记录! Error = 1; 只记录错误 Warning = 2;记录错误和警告 Info = 3; 记录错误、警告和信息 Verbose = 4; 记录所有内容--> <add name ="MySwitch" value="3"/> <add name ="YourSwitch" value="4"/> </switches> </system.diagnostics> </configuration>
static void Main(string[] args) { TraceSwitch ts = new TraceSwitch("MySwitch", "descrption");//开关 Trace.WriteLine(DateTime.Now.ToString() + "--Enter function LogTest"); Trace.Indent(); //缩进+1 Trace.WriteLine("This is indented once"); Trace.Indent(); Trace.WriteLineIf(ts.TraceInfo, "MySwitch TraceInfo is true!"); Trace.Unindent(); //缩进-1 Trace.Unindent(); Trace.WriteLine("Leave function LogTest"); }
日志内容:
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即可写入事件日志。
- 使用.net中的Debug与Trace加强调试能力(SamWang)
- 加强debug能力来提高工作效率
- Trace、Debug和TraceSource与调试及日志设计
- TRACE宏在程序调试中的使用
- TRACE宏在程序调试中的使用
- TRACE宏在程序调试中的使用
- debug,trace的使用
- 调试 函数TRACE("debug information");
- C# 线程手册 第六章 线程调试与跟踪 使用不同的监听器程序[Trace类和Debug类]
- Debug与Trace的区别
- asp.net 中的trace
- Unity中的Debug类调试使用
- 关于.net的debug和trace随谈
- 关于.net的debug和trace随谈
- ASP.NET Trace 使用
- MyEclipse 的使用与程序调试(debug)
- Trace与Debug类的特性
- Debug与Trace工具类的应用
- pdf 或office文件转换成html5的方法
- 一些必不可少的Sublime Text 2插件
- ios 资源
- Vcard 标准格式
- php性能分析工具——XHProf
- 使用.net中的Debug与Trace加强调试能力(SamWang)
- 类/对象结构型模式——适配器模式(Apapter)
- 第十五周任务1
- VS环境下消除VSS
- 屏蔽掉Ogre1.7版本以后的 LOGO和FPS数据显示
- 远程桌面连接数设置
- 浅谈浏览器cookie
- 第十五周3.1
- 一名开发者从做技工的父亲那里学到的 5 堂课