开发者社区> 问答> 正文

【教程免费下载】  Effective Debugging:软件和系统调试的66个有效方法


Preface 前  言
我们在开发软件或对运行软件的系统进行管理的时候,经常会遇到故障。有些故障是因代码问题而引发的编译错误,这种故障可以在短时间内修复;还有一些故障则会使大型系统停机,这将给公司带来每小时数百万的损失(具体货币单位依情况而定)。要想成为一名优秀的专业人士,你就必须在发生故障时迅速找出背后的原因并加以修复。这正是调试的意义所在,也是本书所要谈论的主题。
本书是写给有一定经验的开发者看的,而不是一本介绍性质的读物。它假设读者能够理解用各种编程语言所写成的代码片段,并且会使用高级的GUI编程工具以及基于命令行的编程工具。另一方面,我会在书中详细描述调试技巧,因为我发现:即便是对某些开发方法很有经验的编程专家,也依然需要一些手把手的指导,才能够掌握其他的开发方法。此外,如果你已经花了至少几个月时间来调试一些颇具规模的软件,那么应该会更容易理解书中某些高级技巧所适用的场合。
本书所涵盖的范围
本书所要讲解的调试知识,包括与调试有关的策略、工具及方法。我们当前在开发并运作一款复杂的计算系统时,可能会遇到各种问题,而这些调试知识,则使大家能够应对这些问题。过去我们所说的调试,主要是指检测并修复程序错误,而当前却很少有哪个程序会孤立地运作,即便是一个很小的程序,也会与外部的程序库相链接(通常是动态链接)。更为复杂的程序会运行在应用程序服务器中,会调用Web服务,会使用关系型数据库及NoSQL数据库,会从目录服务器上获取数据,会运行外部的程序,会利用其他的中间件,也会纳入很多第三方的软件包。于是,要想令整个系统及服务正常地运作,就必须确保其中的组件不会发生故障,这些组件可能是由公司内部人员所开发的,也可能是由第三方所提供的,它们所在的主机或许分布在全球各地。为了应对这种局面,软件开发行业开始重视DevOps规程,这套规程旨在同时强调开发者和其他IT专业人员所应担负的职责。与之类似,本书想使读者在面对故障时也能够具备这样一种全面的观念,因为在面对一些极为困难的问题时,我们通常无法立刻判断出该问题到底是由哪一个软件组件所引发的。
本书的内容按照从一般到特殊的顺序来进行安排。首先讲解调试策略(第1章)、调试方法(第2章)以及调试时所用的工具与技术(第3章),这些知识使我们能够应对各种软件故障及系统故障。接下来,讨论在调试工作的各个阶段所用到的具体技巧,也就是在使用调试器(第4章)、编写程序(第5章)、编译软件(第6章)以及运行系统(第7章)时所用到的调试技巧。与多线程和并发有关的bug是很难寻找的,所以最后我们专门用一章(第8章)来讲解特定的调试工具及调试技术,使大家能够找出这些bug。
怎样运用书中的内容
你可以从第一页读起,一页一页往后翻,直到看完。但是别急,其实还有更好的读法。书里给出的建议可以分成以下三种。
策略与方法。这些内容包括我们在面对故障时所应具备的知识以及所应采取的做法。本书第1章和第2章里面的内容就属于这一类,此外,第5章中的很多技巧也可以归入此类。阅读并理解了这些内容之后,你需要在工作中对其加以运用,以便逐渐养成习惯。调试程序的时候,我们需要系统地反思自己所用的办法,如果某个办法行不通,那就应该把自己所经历的路线回顾一遍,这样可以帮助我们发现解决该问题的其他办法。
技巧与工具。这些内容值得大家投入时间去学习,它们主要出现在第3章里面,其他章节中的某些内容(如第36条)也同样可以归为这一类,我们可以在日常工作中运用这些内容来解决问题。大家应该花时间去学习这些内容,并且要逐步实践它们。这或许意味着我们要放弃自己所熟悉的调试工具,而去使用一些学习曲线较为陡峭但是功能上更加先进的调试工具,那些工具虽然一开始学起来比较困难,可是从长远来看,却能够帮助你成为调试方面的专家。
调试的思路。当我们遇到困难时,可以根据这些思路来找寻合适的技巧。这些内容不一定每天都会用到,但是当你遇到一个琢磨不透的问题时,它可以帮助你节省一整天(或者说至少几小时)的时间。比如,如果你不清楚自己所写的C和C++代码为什么无法编译,那么第50条或许能给你一些启发。大家应该快速浏览这些内容,使自己意识到它们可以在某些场合派上用场,等到真正需要使用它们的时候,再去详细研究。

本文出版自《华章出版社》  作者: [希] 迪欧米迪斯·斯宾奈里斯(Diomidis Spinellis)

展开
收起
沉默术士 2017-06-23 15:45:35 2480 0
1 条回答
写回答
取消 提交回答
  • 谢谢楼主分享

    -------------------------

    谢谢楼主分享

    -------------------------

    谢谢楼主分享

    -------------------------

    2018-02-01 15:00:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
在Linux下安...[xubingit].1460269862.pdf 立即下载
成功案例-Par...[幸运杰哥].1512720360.pdf 立即下载
Taking-Windows-10-Kernel-Exploitation-To-The-Next-Level–Leveraging-Write-What-Where-Vulnerabilities-In-Creators-Update 立即下载