Windows用户态程序高效排错 导读

感谢博主的好文章,支持原创 http://book.51cto.com/art/200711/59609.htm

 

《Windows用户态程序高效排错》一书介绍Windows系统上的用户态程序排错方法和技巧。本文是导读部分。

AD: 2013大数据全球技术峰会低价抢票中


导  读

0.1  本书介绍什么

这是一本介绍Windows系统上用户态(User Mode)程序的排错(troubleshooting)方法和技巧的书。

无论是开发、测试还是技术支持,都会遇上程序运行结果跟预期效果不一致的情况。找到问题根源和解决的过程,就是排错。如果问题发生的情况很特殊,比如特别难于重现,或者没有源代码可以参考,在这样的情况下解决问题,就非常具有挑战性!

本书会通过例子来跟大家分享排错过程中的经验和技巧,例如:

 ASP.NET程序在测试环境中一切正常,部署到生产环境中后,在压力比较大的时候,发生Session丢失现象(ASP.NET Session lost);
 VC开发的程序运行一段时间后,不定时发生内存访问错误,然后崩溃;
 程序消耗的句柄数量持续增长,内存使用也持续增长,最后性能下降非常严重(Handle leak, Memory leak);
 VC程序中,使用ShellExecute打开一个本地的TXT文本文件。TXT格式关联到UltraEdit。ShellExecute执行后,发现UltraEdit除了打开这个TXT外,另外还打开了一个GIF文件。

问题可以表现得非常简单,或者非常复杂,可能涉及不同的开发工具和技术。如何分析解决这些问题,正是后面要讨论的。

0.2  本书的组织结构

本书共分为4章:

 第1章介绍最重要的、通用的思考方法。正确的思考方法能帮助找出问题的核心,从而制定排错步骤以及决定采用何种技术和工具进行研究;
 第2章介绍对排错非常有帮助的知识点和工具,包括调试器(debugger)、异常(exception)、内存工具、同步等。选择恰当的工具,在恰当的时间,获取关键信息,结合对应的知识就可以分析出问题的根源;
 第3章介绍.NET Framework(CLR)的相关知识和调试技巧。随着CLR应用的普及,Windows平台上企业级的应用越来越多地用CLR开发,CLR调试的地位举足轻重;
 第4章结合前面的内容,针对常见的几大类问题进行了总结,包括崩溃(crash)、性能问题(performance)和资源泄漏(resource leak)。

0.3  本书的适合读者群

这不是一本教你如何去做的教材,而是一份描述现实中的实际问题,以及对解决办法的归纳总结。如果你想学习程序设计语言的语法,或者某种技术的详细使用方法,这本书并不适合你。

如果你是项目骨干,时常需要排查程序的崩溃,优化程序的性能,这本书会告诉你很多背景知识和充足的实际案例。不管是访问违例,未处理的异常,dump文件分析,数据库性能,程序的死锁,超高CPU使用率,内存泄漏,都有真实详细的分析说明。

如果你是技术爱好者,熟悉C++、汇编、COM技术、CLR、Win32 SDK开发及Web应用,本书不仅会让你看到这些技术后面更多的话题,而且还会介绍调试工具windbg的详细使用。比如汇编级别的优化,C++编译器的bug,COM跟CLR的冲突和性能问题,ADO 在两个CLR版本中的性能比较,还有用windbg分析CLR源代码级别的实现。

如果你还是一个学生,本书会告诉你现实商业环境中的程序问题是怎样的。除了在论坛上讨论C++的虚拟多重继承,抓狂的char * const *(*ss[23][200])(void (*)(int h,void (*)(void)));语法,Java和C#孰优孰劣之余,你可以看到企业级客户面临的问题到底是怎样的。操作系统课程中讲到的死锁,到底是怎样活生生地发生到惠普公司或者花旗银行身上的。

本书适合于所有乐于思考,参与Windows用户态程序开发的人。
如果读者熟悉Windows用户态程序的机理,您将会得到更多的收获!

0.4  本书叙述上的特点

本书的目的在于分享经验,开阔思路。

书中会介绍很多现实的案例和分析方法,但是这些分析方法并不是死板的,也不见得是最优的,希望读者能开动脑筋,参与到作者的思考中来,体会排错的快乐。

由于案例多种多样,有个人用户,有企业级用户,有桌面程序,也有网络服务,所以书中会涉及很多的知识点。对这些知识点的介绍并不是本书的目的,书中只会分析部分重要的知识点。对于书中出现的陌生名词、概念,希望读者能够利用书中给出的链接,通过网络如MSDN来开阔知识面。

在内容组织上,原则是先给出问题描述,然后提供线索,再进行分析,最后是结论和思考。目的是鼓励读者边阅读边思考,体会思考的乐趣。

后面的案例都是这两年来笔者亲手处理过的案例。跟案例相关的具体信息,比如客户信息、源代码和函数名字等都已删除或混淆。为了保护客户数据,也不会附带提供书中用过的DUMP文件。

我在处理这些问题的时候感觉很有趣,所以希望跟大家分享这种乐趣。这并不是一本严肃的介绍性书籍,而更像是blog或者随笔,所以请大家别用严肃的眼光来看。希望你觉得这是一本有趣的书。

 

你可能感兴趣的:(Windows用户态程序高效排错 导读)