c# 调试技巧

大家都知道,打断点是最为大家所熟知的调试技巧,但是除了打断点,还有哪些调试的技巧呢?

System.Diagnostics;这个命令空间里有很多可供调试的类库。Diagnostics这个单词的意思是诊断,在软件的世界里就是诊断程序存在的问题,即调试。下面为大家介绍这个类库里几个非常实用的方法,这几个方法只在DEBUG模式下被编译,而在Release模式下是不会被编译。

1、Debug.WriteLine


这个函数可以输出程序中对象的值。输出的值需要在VS工具栏视图=》输出窗口里查看。

它可以在程序运行时真实显示变量的值,当然有人可能会说:打断点也可以啊。但是打断点这个方法在多线程、频繁进入某个方法体的情况下很难调试,因为断点会阻塞当前线程的执行,会影响变量真实的值。

2、Debug.Assert

断言。函数声明:public static void Assert(bool condition, string message);

它还有其他的重载方法,我只是拿一个最常用的来举个例子。

当condition为false时,命中断言。message字符串是对当前异常情况的描述。

c# 调试技巧

当命中断言时,系统会弹出一个对话框引起你的重视。值得注意的是,如果你不对这个对话框做任何处理,程序会一直阻塞。

有的人可能会说,把错误记录到日志中就可以了。但是需要引起特别关注的错误也需要能引起人特别关注的方法。

这种方法适用于意料以外的情况。比如:你在配置文件中添加了某个配置项,但是在用代码查找这个配置项的时候却找不到,这种情况就是意料之外的。

把错误写入到错误日志中也是查找问题的一种有效方法,这种方法适用于意料之中的错误。

比如你觉得某段代码可能会发生错误,在这段代码外面加上try/catch,然后在catch代码块里面把错误信息写入到日志。

但这种方法使人察觉错误的速度很慢,可能要等到程序没有达到预期的效果时才会意识到要去查看日志。

有些错误一旦发生,必须当时引起人的注意。比如:程序在开启的时候会初始化所有的设备,一旦某个设备初始化失败,后面的程序就无法执行,程序会持续不断的报错,根本无法运行。这种情况下,错误信息必须在开启程序之后被人看到,如果有错误,需要立刻解决这个错误,程序才能一直正常运行。

3、Trace.WriteLine

这个函数的功能和Debug.WriteLine很相似,区别在于它在release模式下也可以打印信息。