C#语言还是比较常见的东西,这里我们主要介绍C#运用Trace语句,包括介绍运用debug和Trace输出等方面。
运用debug和Trace输出
打印诊断消息可以帮你确定你的程序是怎么出错的。你需要知道当触发一个Assert时,发生了什么情况;你也通常需要知道在这之前发生了什么。知道这些的***的方式就是运用你的代码,这样你就可以很容易地看到在出现bug前,调用了什么函数。
在生成调试输出时,.net Framework有一些新的功能可以用。System.Diagnostic.Debug类可以让你格式化调试输出,并能很容易地创建不同的类或级别的调试输出。下面是我喜欢用的一些指导方针。
首先,在你的程序中为每个类建一个traceswitch对象:
- public class MyClass
- {
- private static TraceSwitch
- myClassSwitch = new TraceSwitch
- ("MyClassSwitch", "Controls the \
- debug output of MyClass");
然后,用WriteIf() 和 WriteLineIf() 方法来记录任何你觉得有助于你跟踪你的程序的信息:
- public bool ProcessIterations (int
- numIters)
- {
- WriteLineIf
- (myClassSwitch.TraceInfo,
- "Entering ProcessIterations",
- "CallTrace");
- ImOK ();
- Debug.Assert (numIters > 0,
- "ProcessIterations.",
- "Iterations must be more than 0");
我更喜欢用WriteLineIf(),它可以打印出错误消息以及错误种类。***个参数包含一个用于调试开关的值,可以让你控制打印什么级别的输出。
System.Diagnostics.Trace 的运用同Debug的用法完全一样。不同的地方是,Debug只编译到Debug版本中,而C#运用Trace语句编译到Debug和Release版本中。因此,C#运用Trace语句应更谨慎。将Trace语句用到可以在编程实战中帮你发现bugs或捕获使用特征的代码中。
为什么用这种方法? 运用这些方法可以让你知道代码执行的顺序。这有助于你确定在程序出错前有何动作(actions)。
【编辑推荐】