软件调试的艺术

出版时间:2009-11  出版社:人民邮电出版社  作者:Norman Matloff,Peter Jay Salzman  页数:216  字数:337000  译者:张云  
Tag标签:无  

前言

“嘿,还真不错呢!”我们的学生Andrew首次认真使用调试工具后惊叹道。Andrew三年前在大一上编程课时就学过了调试工具,不过那时他只是将调试工具当做应付期末考试的内容来打发的。现在他已经大四了,教授强烈要求他停止采用输出语句进行调试的方法,改为使用正式调试工具。让Andrew喜出望外的是,他发现使用恰当的工具可以大大缩短调试时间。如今,在学生及已参加工作的程序员中,还有不少“Andrew”,但愿本书能帮助“Andrew们”发现调试工具的好处。但是,我们更希望本书能帮助那些已经使用了调试工具,但还无法确定在什么情况下该做什么事的程序员做出适当的判断。本书也适用于打算进一步学习调试工具及其幕后原理的人。 本书的编辑曾说过,很多调试知识以前都只是在圈子里口口相传,没有正式编著成书。本书将改变这一状况。本书回答了下列问题。 如何调试线程代码?为什么有时候断点最终出现的位置与原来设置的位置略有偏差?GDB的until命令为什么有时会跳到意想不到的地方?如何巧妙使用DDD和Eclipse?在当今普遍使用GUI的时代,像GDB这样的基于文本的应用程序还有价值吗?为什么当错误代码超出数组边界时不发生段错误?为什么要将我们的一个示例数据结构命名为nsp?

内容概要

  调试对于软件的成败至关重要,正确使用恰当的调试工具可以提高发现和改正错误的效率。本书详细介绍了3种调试器,GDB用于逐行跟踪程序、设置断点、检查变量以及查看特定时间程序的执行情况,DDD是流行的GDB的GUI前端,而Eclipse提供完整的集成开发环境。书中不但配合实例讨论了如何管理内存、理解转储内存、跟踪程序找出错误等内容,更涵盖了其他同类书忽略的主题,例如线程、客户/服务器、GUI和并行程序,以及如何躲开常见的调试陷阱。  本书适合各层次软件开发人员、管理人员和测试人员阅读。

作者简介

马特洛夫(Norman Matloff)美国加州大学戴维斯分校计算机科学教授,研究领域涉及并行处理(尤其是软件分布式共享内存)、计算
机通信网络、数据安全及数学和应用统计等。他编写了很多开源软件包。创作的在线教程也深受欢迎。

书籍目录

第1章 预备知识 1.1 本书使用的调试工具 1.2 编程语言 1.3 调试的原则  1.3.1 调试的本质:确认原则  1.3.2 调试工具对于确认原则的价值所在  1.3.3 其他调试原则 1.4 对比基于文本的调试工具与基于GUI的调试工具,两者之间的折中方案  1.4.1 简要比较界面  1.4.2 折中方法 1.5 主要调试器操作  1.5.1 单步调试源代码  1.5.2 检查变量  1.5.3 在GDB、DDD和Eclipse中设置监视点以应对变量值的改变  1.5.4 上下移动调用栈 1.6 联机帮助 1.7 初涉调试会话  1.7.1 GDB方法  1.7.2 同样的会话在DDD中的情况  1.7.3 Eclipse中的会话 1.8 启动文件的使用第2章 停下来环顾程序 2.1 暂停机制 2.2 断点概述 2.3 跟踪断点  2.3.1 GDB中的断点列表  2.3.2 DDD中的断点列表  2.3.3 Eclipse中的断点列表 2.4 设置断点  2.4.1 在GDB中设置断点  2.4.2 在DDD中设置断点  2.4.3 在Eclipse中设置断点 2.5 展开GDB示例 2.6 断点的持久性 2.7 删除和禁用断点  2.7.1 在GDB中删除断点  2.7.2 在GDB中禁用断点  2.7.3 在DDD中删除和禁用断点  2.7.4 在Eclipse中删除和禁用断点  2.7.5 在DDD中“移动”断点  2.7.6 DDD中的Undo/Redo断点动作 2.8 进一步介绍浏览断点属性  2.8.1 GDB  2.8.2 DDD  2.8.3 Eclipse 2.9 恢复执行  2.9.1 在GDB中  2.9.2 在DDD中  2.9.3 在Eclipse中 2.10 条件断点  2.10.1 GDB  2.10.2 DDD  2.10.3 Eclipse 2.11 断点命令列表 2.12 监视点  2.12.1 设置监视点  2.12.2 表达式第3章 检查和设置变量 ……第4章 程序崩溃处理第5章 多活动上下文中的调试第6章 特殊主题第7章 其他工具第8章 对其他语言使用GDB/DDD/Eclipse

章节摘录

插图:1.3.1调试的本质:确认原则下面的规则是调试的本质。·确认的基本原则修正充满错误的程序,就是逐个确认,你自认为正确的许多事情所对应的代码确实是正确的。当你发现其中某个假设不成立时,就表示已经找到了关于程序错误所在位置(可能并不是准确的位置)的线索。换一种表达方式来说:惊讶是好事!当你认为关于程序的某件事情是正确的,而在确认它的过程中却失败了,你就会感到惊讶。但这种惊讶是好事,因为这种发现会引导你找到程序错误所在的位置。1.3.2调试工具对于确认原则的价值所在传统的调试技术只是向程序中添加跟踪代码以在程序执行时输出变量的值,例如使用printf()或COIlt语句输出变量的值。你可能会问:“这样操作够吗?为什么要使用GDB、DDD或Eclipse这样的调试工具?”首先,这种方法要求有策略地持续添加跟踪代码,重新编译程序,运行程序并分析跟踪代码的输出,在修正程序错误之后删除跟踪代码,并且针对发现的每个新的程序错误重复上述这些步骤。这种工作过程非常耗时,并且容易令人疲劳。最为重要的是,这些操作将你的注意力从实际任务转移开,并且降低了集中精力查找程序错误所需的推理过程的能力。相反,通过使甩DDD和Eclipse这样的图形调试工具,只需要将鼠标指针移动到代码显示中的变量实例上方就可以检查该变量的值,并且此时会显示该变量的当前值。为什么还要在整夜的调试中使用printf()语句来输出变量的值,使自己更加疲劳,等待更长的时间呢?放松心情,使用调试工具可以减少所花费的时间和需要忍受的厌烦感。

媒体关注与评论

“Linux/Unix平台的C程序员将从本书中获益最多,其他平台上的开发者也能从中学到宝贵的调试技术和秘诀。”.  ——D. Spinellis,Jolt奖获奖图书《高质量程序设计艺术》作者“本书是一部软件调试杰作,可以大大提升你的调试技术水平……所有编程入门课程都应该讲授其中的核心内容。我强烈推荐本书!”  ——Amazon读者评论

编辑推荐

《软件调试的艺术》:调试对软件开发至关重要。然而,即使对于有经验的程序员,调试也并非易事。《软件调试的艺术》是一部优秀的软件调试入门著作,对业界多年口口相传的调试经验做了很好的总结。书中通过丰富的C/C++实例,生动阐述了适用于各种平台与编程语言的通用调试原则、基础知识、经验技巧和相关的背景知识,详细讲解了Linux/Unix平台最受欢迎的三个调试工具——GDB、DDD和Eclipse,并讨论了网络、多线程、GUI和多核程序的调试等高级主题。不仅如此,书中还讲述了如何在调试中运用vim、gcc、errno和lint等工具,以及Java、Python、Perl和汇编等程序的调试。

图书封面

图书标签Tags

评论、评分、阅读与下载


    软件调试的艺术 PDF格式下载


用户评论 (总计27条)

 
 

  •   书已经都读完了。非常适合对gdb有一定基础后想深一步了解的同学学习。我们的软件调试中;书上讲的所有内容都用得上几乎。非常好。结构体变量,结构体指针内容显示,GUI,多线程,网络编程调试,core文件的分析利用等。
  •   唯一一本介绍调试unix系统编程的书,适用c语言。linux环境的c语言开发调试。
  •   简单实用,弥补了调试方面的空白。相当初,在学校几十万册书的图书馆里找不到几本像样的介绍调试的书,国内的高校教育已经各种教程都忽视了程序调试的教学,所以很多人浪费了很多时间在折腾代码。学会调试会节省很多不必要的犯错时间。看到的就买吧,值得拥有。
  •   讲的挺好的,适合调试入门
  •   比较适合linux编程的初学者!但是最好是数据结构和c++开发功底比较扎实的,因为举的例子都是数据结构里面的。总体来看,看完第一章就能收获很多,后面讲了一部分内部技术实现,可以帮助深入理解,非常不错噢!
  •   书挺好的 是一本提高经验的书~~
  •   内容不多,但是“正确”而且“有用”,是难得的入门书
  •   书还不错,讲的挺细的
  •   粗浅的讲了讲使用gdb、ddd和eclipse来调试,感觉还不错
  •   值得想学习GDB,又不愿意阅读帮助的购买。

    这本书可以回答如下问题:
    1)软件调试器是什么,一般有什么功能
    2)GDB的主要功能,以及一些外挂的GUI。
    3)使用GDB的高级功能。比如我学到的为断点促发后,通过***mands 输出关心的信息,然后continue 继续执行,适用于动态捕获程序运行状态。

    阅读后很认真的做了读书笔记(freemind)。想要的给我联系。

    这本书没有解释GDB的工作原理,比如为什么-d 编译出来的文件很大,包含什么内容,编译的程序怎么和代码关联的?
    参阅《深入理解计算机系统》
  •   也许我是调试底子太弱的原因,这本书我觉得很好。
  •   调试的好帮手。
  •   买来之后,狂啃一通,个人感觉这是一本很不错的入门书籍。尽管有些地方,翻译的不是很好,但是不伤大雅。对于喜欢在linux/unix下编程的朋友,这一本书很有用。
  •   无论是开发人员还是测试人员,都应该读的一本书,对提高自身技能有很大帮助。
  •   1、翻译的水平不咋地,好像不是计算机出生2、内容一般般,还不如多看看gdb的手册,不过中文参考资料实在是少
  •   很没内容的一本书 觉得买亏了
  •   很不错的一本书,对于linux调试的基本技术讲解的简单易懂
  •   作为工具书来说内容太瘦。
  •   挺好的一本书,可以当作资料书,用的时候,查一下
  •   不够深入,不过很适合初学者
  •   也许没有调试工具 你也一样可以 用输出语句来协助调试, 我以前就是这样做的在程序上到处都写上printf().可是用上调试工具 真的是事半功倍, 现如今社会, 敏捷开发, 效率才是王道.
  •   大部分内容都是介绍怎么使用GDB,实例不是很多,让人感觉不到是一种寓教于乐的感觉。
  •   这样才名副其实,书本身还行,GDB入门的人可以看看,对用惯了GDB的老手的价值就不是那么大了。
  •   对工作和学习帮助很大,里面的东西很实用,也很全面
  •   适合Linux程序员,书还是不错的,我还在研究中!
  •   作为入门还行,工作几年的人不太实用了
  •   昨天刚下的单,今天上午九点送货员就送过来了!速度很快!书还没有来的及看,不过包装很精美!对内容应该不会失望的~
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7