找到问题根源——评《Windows高级调试》

调试,是通过尝试运行程序找到问题根源的过程。这和测试不同,测试是发现问题的过程,但不深究问题产生的位置、原因。调试是开发人员必须具备的能力,即便是在分工很细致的大企业中——设计、开发、测试往往由不同的工程师完成——调试这项工作却常常(甚至是必须)由开发人员自己进行。

调试有两个层面,一种是基本调试,是我们每天都在接触的。通常,一个完善的集成开发环境通常都自带有调试器;而如今开发人员的开发习惯,也是写完一段语法完整的代码后就顺手启动调试器调试一下。这类调试通常是特定语言的、源代码级别的、用户态的,对于上层的逻辑错误通常是足够的;但如果遇到更深层次的问题,仅仅通过基本调试就无能为力了。

另一种是高级调试,这种调试通常使用独立的调试器(未与开发环境集成),并能脱离源代码进行调试;甚至可以调试操作系统的底层问题(内核调试)。高级调试并不是开发人员所必需具备的能力(甚至很多开发人员并不熟练掌握高级调试),但掌握高级调试可以大幅提高自身功力,对于开发技术的进阶是必不可少的。

《Windows高级调试》(以下简称《AWD》)一书正是讲解如何在Windows操作系统上进行高级调试的。其实“高级调试”不过是“另一种调试方法”而已,它也有自己的入门、进阶、精通等程度。而《AWD》一书,在老刘看来应该是属于“入门”和“进阶”这两个级别的,特别适合于掌握了一定的开发技术和基本调试技术,想学习高级调试的朋友。

《AWD》分为三部分,第一部分主要介绍高级调试应具备的基本工具,包括调试器和符号文件等。虽然在第一章中介绍了很多种调试器,但整本书用得最多的还是windbg.exe。

第二部分则从实践的角度介绍了多种调试场景,如内存、资源、进程间通信和同步等。这一部分是整本书的核心,细读下来不仅能掌握高级调试的基本方法,还能对操作系统原理有更加深刻的掌握。

第三部分则是高级调试中的高级主题,这一部分内容对于大多数开发人员来说可能并不是必须的,甚至日常工作根本用不到。但对于对调试技术非常着迷的朋友,或者是系统开发者,这部分却是必不可少的。正如Raymond McCollum所说,大多数书籍在涉及到如此高级的主题时,往往“留给读者练习”或“请参阅其他高级参考书”,而本书则属于那些“高级参考书”。

前面提到本书属于“入门”和“进阶”的级别,并非看轻此书。高级调试技术本身就是相对复杂的,但本书却没有故弄玄虚,而是从多种常见的调试场景入手,介绍如何使用调试器来完成特定的调试任务。这样新进入调试领域的开发者就能很快地上手,实际感受到调试的快感和乐趣。而即便是经常使用调试器的熟手,也可以将本书作为参考,快速查找各种场景中的调试命令。

《AWD》一书的遗憾在于,并没有非常详尽地介绍每种调试器,所以读者朋友不得不“参与其他文章或书籍”来掌握各种调试器的基本操作。当然,如果不是这样的话,您手中的书可就不是500余页这么简单了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15783504/viewspace-628688/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15783504/viewspace-628688/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源有目录,对大家学习调试技术会有很大的帮助 译 者 序 软件调试是开发人员日常工作的重要组成部分。无论软件工程的理念多么先进,开发进度的安排多么合理,或者开发人员的经验多么丰富,人们在开发软件时总是无法保证不出现任何错误。当软件出现错误时,就需要进行调试。近年来,随着软件规模和复杂性的不断增加,错误的出现频率以及调试难度也在以非线性的方式增长。要想提高调试工作的效率,采用正确的调试思路和调试工具是非常重要的。有时候,一个需要数天时间才能解决的问题,如果换一种调试思路或者借助某种特殊的调试工具,或许只需1个小时就可以解决。 软件人员通常都知道许多高效的编码方法,例如极限编程、代码自动生成框架等,但他们很少知道一些高效的调试方法。大多数软件开发人员的调试思路和所使用的调试工具都还停留在比较初级的阶段,例如仅限于通过集成开发环境自带的调试器来进行单步跟踪。事实上,随着Windows的不断发展,Windows调试工具的数量和功能也在不断增加。但可惜的是,很少有人知道这些强大的调试工具,而了解这些工具的独特优势并且针对不同调试问题采用正确调试工具的人则更少。有些软件开发人员经常加班和熬夜,往往是因为他们使用了一些低效的方法来调试复杂的问题,他们并不知道其实存在着一些更高效的调试方式可以帮他们节约大量的时间。 本书的写作初衷正是为了将一些非常有价值的调试思路和调试工具推荐给软件开发人员,目的是提高开发人员的调试效率。本书的特点如下。 1) 系统地介绍了Windows调试的基础知识。这些知识包括两个方面:Windows中一些底层组件的知识,包括调用栈的结构、堆管理器的工作原理、安全管理机制、进程间通信协议等;一些基本的调试知识,包括调试器的工作原理、调试符号的使用、内存转储文件的结构以及栈回溯中包含的调试信息等。 2) 结合实际问题来阐述正确的调试思路以及各种调试工具的使用。本书采用的叙述方式是,首先给出某个实际的问题,例如内存破坏、同步问题、资源泄漏、安全威胁等;然后介绍分析这个问题的正确调试思路,例如如何通过程序的异常表现来了解问题的具体信息;最后根据所调试问题来采用正确的调试工具,并详细讲解了各种调试工具的使用方法和技巧。 3) 讲解了一些高级调试主题,包括64位操作系统上的调试Windows Vista系统上的调试、事后调试以及调试扩展的编写等。这些主题为开发人员进行复杂的调试提供了必要的基础知识。 作者Mario Hewardt和Daniel Pravat是Microsoft公司的资深工程师,他们从事的工作就是保证Windows产品的可靠性、稳定性以及安全性。他们在调试领域已经工作了十余年的时间,积累了丰富的调试实践经验,而本书正是融合了这些宝贵的经验而形成的。因此,对于Windows开发人员来说,本书是一本不可多得的调试参考手册。 本书的技术性较强,需要读者对Windows系统的底层架构和组件有一定的了解,并且具备一定的编程基础和调试基础。如果读者需要补充这些方面的知识,可以参考作者在书中介绍的相关参考书籍。 参与本书翻译工作的还有李杨、吴汉平、徐光景、童胜汉、陈军、胡凯、刘红、张玮、陈红、李斌、李勇涛、王海涛、周云波、彭敏才和张世锋等。由于译者的时间和水平有限,翻译中的疏漏和错误在所难免,请读者和同行不吝指正。 感谢妻子云兰和女儿彤彤,虽然在翻译本书的过程中减少了陪伴你们的时间,但你们依然理解和支持我的工作。感谢父母在生活上的帮助,使我可以全身心地投入到本书的翻译工作中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值