最近阅读了熊力编著的《Windows 用户态程序高效排错》,虽然只是局限于读了读,很多内容都不是很懂,也没有时间和需要的程序去联系里面所教的调试技术,但是这确实是一本Windows调试方面的好书。需要的看官可以到http://files.cnblogs.com/lixiong/userdbg_msinternal.pdf下载电子版(作者自己上传的,非盗版)。
比工具、技巧和经验都重要的是你的思考。这句话是我看这本书最大的收获(技术方面看不懂,非作者写的不好)。思考是Bug的最大杀手,而非工具、技巧和经验,对于我这种系统、编程语言知识都不扎实的人就更是这样了。很多编程高手认为常见的Bug对于我们来说都是无法想见的,即使看到关键语句也不一定能想到Bug就出在那儿。所以,很多的Bug,我们没有技巧,更不谈经验,甚至连工具都用不熟练,我们有的只是我们的逻辑思维能力,通过逻辑的分析把问题的范围一点一点的减小再减小,最终找到Bug的藏身之处,把它揪出来,kill掉。
模糊记得有人给我说过,DEV需要的是技术,Test需要的是思考的方法。现在想来对这句话很是同意,Debug十分需要逻辑的严密性与广泛性。即使对于
void foo()
{
foo();
}
void main()
{
foo();
}
这样一个简单到不能再简单的程序,你能在第一眼就说出它的运行结果吗?是崩溃还是死循环或是其他?你能想到它在Debug模式和Release模式运行结果完全不同吗?所以各位Bug Killer们请不要忽略任何一处细节,严密的逻辑思维才是Bug真正的杀手。认真思考,严密论证,最终Bug会无处藏身的。
Bug有时候并不可怕,一些小Bug甚至会让人们觉得很好玩。比如,在win7系统中,选择一个文件夹,重命名之,在它的名字后面加一个“.",即英文的句号,回车。
哇,文件夹消失了~~~~~不过不用担心,刷新一下它又回来了。
呵呵,很好玩吧,还有更好玩的筒子用Windbg来修改warcraft中某个API的返回值,使得中文版的魔兽争霸能运行在英文的系统上,而不是用大家一般打补丁的方法(这个例子是书中所述,感兴趣的童鞋可以自己找来看看)。
总之一句话吧,祝大家用自己的思考,做一个开心的Bug Killer。