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或者随笔,所以请大家别用严肃的眼光来看。希望你觉得这是一本有趣的书。

     

    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值