软件调试实战(软件调试权威指南)(china-pub首发)
基本信息
- 原书名: The Developer's Guide to Debugging
- 原出版社: Springer
- 作者: (德)Thorsten Grotker Ulrich Holtmann Holger Keding Markus Wloka [作译者介绍]
- 译者: 赵俐
- 丛书名: 图灵程序设计丛书 软件工程系列
- 出版社:人民邮电出版社
- ISBN:9787115218858
- 上架时间:2010-1-29
- 出版日期:2010 年2月
- 开本:16开
- 页码:190
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 软件质量、软件测试及维护
编辑推荐
Amazon五星图书
Synopsys公司专家的调试经验总结
软件调试权威指南
推荐阅读
内容简介回到顶部↑
作译者回到顶部↑
本书提供作译者介绍
本书4位作者均拥有德国或美国著名高等学府的博士学位,目前都任职于EDA(电子设计自动化)软件领导厂商Synopsys(新思)公司,分别担任研发主管、资深软件工程师等职位,负责开发编译器和调试工具,具有解决各种调试问题的丰富经验。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
第1章 谁编写软件,谁制造bug(为什么需要本书) 1
第2章 系统性调试方法 3
2.1 为什么要遵循结构化的过程 3
2.2 充分利用机会 3
2.3 13条黄金规则 5
2.3.1 理解需求 5
2.3.2 制造失败 6
2.3.3 简化测试用例 6
2.3.4 读取恰当的错误消息 6
2.3.5 检查显而易见的问题 6
2.3.6 从解释中分离出事实 7
2.3.7 分而治之 7
2.3.8 工具要与bug匹配 8
2.3.9 一次只做一项更改 9
2.3.10 保持审计跟踪 9
2.3.11 获得全新观点 9
2.3.12 bug不会自己修复 9
2.3.13 用回归测试来检查bug修复 10
2.4 构建一个好的工具包 10
2.4.1 工具箱 11
第2章 系统性调试方法 3
2.1 为什么要遵循结构化的过程 3
2.2 充分利用机会 3
2.3 13条黄金规则 5
2.3.1 理解需求 5
2.3.2 制造失败 6
2.3.3 简化测试用例 6
2.3.4 读取恰当的错误消息 6
2.3.5 检查显而易见的问题 6
2.3.6 从解释中分离出事实 7
2.3.7 分而治之 7
2.3.8 工具要与bug匹配 8
2.3.9 一次只做一项更改 9
2.3.10 保持审计跟踪 9
2.3.11 获得全新观点 9
2.3.12 bug不会自己修复 9
2.3.13 用回归测试来检查bug修复 10
2.4 构建一个好的工具包 10
2.4.1 工具箱 11
译者序回到顶部↑
软件并不是从一开始就完美无缺,它包含各种各样的缺陷和错误,因此需要不断调试,找到问题,然后修改代码。好的调试技巧可以帮助我们创建高质量的软件,因此在软件开发项目中,花时间进行全面而细致的调试工作是非常值得的。
软件调试早已经不是什么陌生的字眼了,大多数开发人员都或多或少做过一些调试工作,例如源代码调试、内存调试、性能调试等。然而要在实际工作中出色地完成调试工作却并不容易,因为调试需要耗费大量时间,而且具有很大的不确定性。在很多情况下,我们很难预知修复一个bug需要多长时间,甚至根本不知道能否修复它。由于这些原因,我们必须采用系统性的调试方法并配备正确的工具,这正是本书的核心。
本书主要以C和C++程序为例详解如何通过调试来分析和改进程序代码。书中揭示了大量的软件缺陷并介绍了各种调试技术,同时给出了如何编写可调试代码的建议。相信所有开发人员,特别是调试人员,都能够从本书中获益匪浅。
翻译从来都是一项充满挑战和趣味性的工作,本书的翻译更是如此,每当我字斟句酌地思考应该如何用最准确简练的语言表达几位作者思想的时候,总是能够从他们的智慧和洞察力中得到启示,从而对调试有了越发深刻的认识,这使得北京炎热的夏天也成了最美好的时光。我把这本书当成了我的老师,也希望它能够成为各位读者的老师,把几位作者的思想精华传授给你们。
最后,衷心感谢北京双飞软件公司的同仁们在翻译中给予的帮助,以及在一些高级调试主题方面的技术支持。由于译者水平有限,在翻译过程中难免会出现一些错误,恳请读者批评指正。
2009年9月
软件调试早已经不是什么陌生的字眼了,大多数开发人员都或多或少做过一些调试工作,例如源代码调试、内存调试、性能调试等。然而要在实际工作中出色地完成调试工作却并不容易,因为调试需要耗费大量时间,而且具有很大的不确定性。在很多情况下,我们很难预知修复一个bug需要多长时间,甚至根本不知道能否修复它。由于这些原因,我们必须采用系统性的调试方法并配备正确的工具,这正是本书的核心。
本书主要以C和C++程序为例详解如何通过调试来分析和改进程序代码。书中揭示了大量的软件缺陷并介绍了各种调试技术,同时给出了如何编写可调试代码的建议。相信所有开发人员,特别是调试人员,都能够从本书中获益匪浅。
翻译从来都是一项充满挑战和趣味性的工作,本书的翻译更是如此,每当我字斟句酌地思考应该如何用最准确简练的语言表达几位作者思想的时候,总是能够从他们的智慧和洞察力中得到启示,从而对调试有了越发深刻的认识,这使得北京炎热的夏天也成了最美好的时光。我把这本书当成了我的老师,也希望它能够成为各位读者的老师,把几位作者的思想精华传授给你们。
最后,衷心感谢北京双飞软件公司的同仁们在翻译中给予的帮助,以及在一些高级调试主题方面的技术支持。由于译者水平有限,在翻译过程中难免会出现一些错误,恳请读者批评指正。
2009年9月
前言回到顶部↑
在创作本书时,我们几位作者都就职于一家生产软件产品的技术公司,只是所属的项目或产品不同。然而,我们都曾经被派去支持客户和同行解决C和C++程序的调试问题,这是我们软件工程工作的一部分,因为我们开发了一些用来帮助用户编写优化仿真程序的工具,或者只是因为我们凑巧开发了调试工具。在这个过程中,我们一次又一次地重复着相同的基本技巧,因为在调试方面没有好的图书可供参考。
现在就不一样了。
本书的网站
我们建立了一个网站来补充本书的内容,网址为http://www.debugging-guide.com,站点上列出了软件调试主题的最新参考资料,包括工具、图书、杂志、研究论文、会议、教程和Web链接。站点还提供了本书中的示例和更多可供下载的资料。
现在就不一样了。
本书的网站
我们建立了一个网站来补充本书的内容,网址为http://www.debugging-guide.com,站点上列出了软件调试主题的最新参考资料,包括工具、图书、杂志、研究论文、会议、教程和Web链接。站点还提供了本书中的示例和更多可供下载的资料。
序言回到顶部↑
在所有软件开发工作中,调试或许是最令人苦恼的。调试工作极易受到指责,因为技术失败即意味着做人失败,而且矛头直指调试人员,昭示出他们所犯下的错误。由于必须反复思考每个假设,反复斟酌从需求到实现的每个步骤,因此调试将耗费大量时间。最糟糕的是,调试还无法预测,我们永远无法知道修复一个bug需要多长时间,甚至根本不知道是否能够修复它。
问一下开发人员他们生活中最沮丧的时刻,大多数回答将与调试有关。也许现在正是深夜11点,你仍在忙着调试,正当对程序进行走查时,你的家人打电话给你,问你到底什么时候才能回家,而你只希望尽快放下电话,因为好不容易得到的观察结果和推断正要从脑中溜走。此时,你可能最后有两种选择:一是重新调试,二是过后再试图重修旧好。据我个人估计,调试是导致程序员离婚的第一大原因。
然而,调试也蕴含着乐趣,就像解出难题、猜出谜语或破获谋杀案一样令人激动,但前提条件是必须采用系统性的方式并配备正确的工具。这正是本书的用武之地。本书四位作者直接与那些固持己见的开发者对话,直截了当地提出解决调试问题的建议,并给出了真正快速的解决方案。无论是解决内存问题,调试并行程序,还是处理工具链引入的问题,本书都能够提供“急救措施”,书中的建议都是经过反复尝试和验证的。
如果我最初开始调试程序时就能有这样一本书,该多好啊!我想我会屏息注视,看看这些调试工具将带给我什么惊喜,而且采纳书中的建议,必然会节省大量手工调试的时间,并可将这些时间投入到其他工作中。譬如说,可以使代码更可靠,这样最后可能根本不必做任何调试了。
当然,这是专业编程的长期目标,即从一开始就编写正确的代码,通过某种确认或验证方法来杜绝所有错误(或至少检测到错误)。目前,断言和单元测试已经在提高程序可信度方面提供了很多帮助。未来可能会有一些用于行业级系统的成熟验证方法。我们现在尚未实现这样的方法,这可能需要很多年,而且当达到这个目标时,所实现的方法肯定不会适用于现在的编程语言。在处理当今的程序,特别是那些C和C++程序时,我们仍将在调试上花费一定时间——这正是本书的宝贵价值所在。
Andreas Zeller
2008年春于萨尔兰德大学
问一下开发人员他们生活中最沮丧的时刻,大多数回答将与调试有关。也许现在正是深夜11点,你仍在忙着调试,正当对程序进行走查时,你的家人打电话给你,问你到底什么时候才能回家,而你只希望尽快放下电话,因为好不容易得到的观察结果和推断正要从脑中溜走。此时,你可能最后有两种选择:一是重新调试,二是过后再试图重修旧好。据我个人估计,调试是导致程序员离婚的第一大原因。
然而,调试也蕴含着乐趣,就像解出难题、猜出谜语或破获谋杀案一样令人激动,但前提条件是必须采用系统性的方式并配备正确的工具。这正是本书的用武之地。本书四位作者直接与那些固持己见的开发者对话,直截了当地提出解决调试问题的建议,并给出了真正快速的解决方案。无论是解决内存问题,调试并行程序,还是处理工具链引入的问题,本书都能够提供“急救措施”,书中的建议都是经过反复尝试和验证的。
如果我最初开始调试程序时就能有这样一本书,该多好啊!我想我会屏息注视,看看这些调试工具将带给我什么惊喜,而且采纳书中的建议,必然会节省大量手工调试的时间,并可将这些时间投入到其他工作中。譬如说,可以使代码更可靠,这样最后可能根本不必做任何调试了。
当然,这是专业编程的长期目标,即从一开始就编写正确的代码,通过某种确认或验证方法来杜绝所有错误(或至少检测到错误)。目前,断言和单元测试已经在提高程序可信度方面提供了很多帮助。未来可能会有一些用于行业级系统的成熟验证方法。我们现在尚未实现这样的方法,这可能需要很多年,而且当达到这个目标时,所实现的方法肯定不会适用于现在的编程语言。在处理当今的程序,特别是那些C和C++程序时,我们仍将在调试上花费一定时间——这正是本书的宝贵价值所在。
Andreas Zeller
2008年春于萨尔兰德大学
媒体评论回到顶部↑
“如果我最初开始调试程序时就能有这样一本书,该多好啊!我想我会屏息注视,看看这些调试工具将带给我什么惊喜,而且采纳书中的建议必然会节省大量手工调试的时间,可以将这些时间投入到其他工作中。譬如说,我可以使代码更可靠,这样最后可能根本不必做任何调试了。”
——Andreas Zeller,GNU DDD创始人
“逐页阅读完本书之后,我必须承认这是我读过的最好的一本软件调试图书,在很多方面都是其他书不能匹敌的……强烈推荐软件调试人员阅读。”
——www.dumpanalysis.org(崩溃转储分析和调试门户网站)
——Andreas Zeller,GNU DDD创始人
“逐页阅读完本书之后,我必须承认这是我读过的最好的一本软件调试图书,在很多方面都是其他书不能匹敌的……强烈推荐软件调试人员阅读。”
——www.dumpanalysis.org(崩溃转储分析和调试门户网站)








点击看大图






加载中...

