调试对于软件的成败至关重要,正确使用恰当的调试工具可以提高发现和改正错误的效率。《软件调试的艺术》详细介绍了3种调试器,GDB用于逐行跟踪程序、设置断点、检查变量以及查看特定时间程序的执行情况,DDD是流行的GDB的GUI前端,而Eclipse提供完整的集成开发环境。书中不但配合实例讨论了如何管理内存、理解转储内存、跟踪程序找出错误等内容,更涵盖了其他同类书忽略的主题,例如线程、客户/服务器、GUI和并行程序,以及如何躲开常见的调试陷阱。
《软件调试的艺术》适合各层次软件开发人员、管理人员和测试人员阅读。
第1章 预备知识 1
1.1 本书使用的调试工具 1
1.2 编程语言 2
1.3 调试的原则 2
1.3.1 调试的本质:确认原则 2
1.3.2 调试工具对于确认原则的价值所在 2
1.3.3 其他调试原则 3
1.4 对比基于文本的调试工具与基于GUI的调试工具,两者之间的折中方案 4
1.4.1 简要比较界面 4
1.4.2 折中方法 9
1.5 主要调试器操作 11
1.5.1 单步调试源代码 11
1.5.2 检查变量 12
1.5.3 在GDB、DDD和Eclipse中设置监视点以应对变量值的改变 14
1.5.4 上下移动调用栈 14
1.6 联机帮助 15
1.7 初涉调试会话 16
1.7.1 GDB方法 18
1.7.2 同样的会话在DDD中的情况 31
1.7.3 Eclipse中的会话 34
1.8 启动文件的使用 38
第2章 停下来环顾程序 39
2.1 暂停机制 39
2.2 断点概述 39
2.3 跟踪断点 40
2.3.1 GDB中的断点列表 40
2.3.2 DDD中的断点列表 41
2.3.3 Eclipse中的断点列表 42
2.4 设置断点 42
2.4.1 在GDB中设置断点 42
2.4.2 在DDD中设置断点 45
2.4.3 在Eclipse中设置断点 46
2.5 展开GDB示例 46
2.6 断点的持久性 48
2.7 删除和禁用断点 50
2.7.1 在GDB中删除断点 50
2.7.2 在GDB中禁用断点 51
2.7.3 在DDD中删除和禁用断点 51
2.7.4 在Eclipse中删除和禁用断点 53
2.7.5 在DDD中“移动”断点 53
2.7.6 DDD中的Undo/Redo断点动作 54
2.8 进一步介绍浏览断点属性 55
2.8.1 GDB 55
2.8.2 DDD 56
2.8.3 Eclipse 56
2.9 恢复执行 56
2.9.1 在GDB中 57
2.9.2 在DDD中 64
2.9.3 在Eclipse中 66
2.10 条件断点 66
2.10.1 GDB 67
2.10.2 DDD 69
2.10.3 Eclipse 69
2.11 断点命令列表 70
2.12 监视点 74
2.12.1 设置监视点 75
2.12.2 表达式 77
第3章 检查和设置变量 78
3.1 主要示例代码 78
3.2 变量的高级检查和设置 80
3.2.1 在GDB中检查 80
3.2.2 在DDD中检查 84
3.2.3 在Eclipse中检查 86
3.2.4 检查动态数组 88
3.2.5 C++代码的情况 90
3.2.6 监视局部变量 92
3.2.7 直接检查内存 92
3.2.8 print和display的高级选项 93
3.3 从GDB/DDD/Eclipse中设置变量 93
3.4 GDB自己的变量 94
3.4.1 使用值历史 94
3.4.2 方便变量 94
第4章 程序崩溃处理 96
4.1 背景资料:内存管理 96
4.1.1 为什么程序会崩溃 96
4.1.2 内存中的程序布局 97
4.1.3 页的概念 99
4.1.4 页的角色细节 99
4.1.5 轻微的内存访问程序错误可能不会导致段错误 101
4.1.6 段错误与Unix信号 102
4.1.7 其他类型的异常 105
4.2 核心文件 106
4.2.1 核心文件的创建方式 106
4.2.2 某些shell可能禁止创建核心文件 107
4.3 扩展示例 108
4.3.1 第一个程序错误 111
4.3.2 在调试会话期间不要退出GDB 113
4.3.3 第二个和第三个程序错误 113
4.3.4 第四个程序错误 115
4.3.5 第五个和第六个程序错误 116
第5章 多活动上下文中的调试 120
5.1 调试客户/服务器网络程序 120
5.2 调试多线程代码 125
5.2.1 进程与线程回顾 125
5.2.2 基本示例 127
5.2.3 变体 132
5.2.4 GDB线程命令汇总 133
5.2.5 DDD中的线程命令 134
5.2.6 Eclipse中的线程命令 134
5.3 调试并行应用程序 136
5.3.1 消息传递系统 136
5.3.2 共享内存系统 141
5.4 扩展示例 143
5.4.1 OpenMP概述 143
5.4.2 OpenMP示例程序 144
第6章 特殊主题 155
6.1 根本无法编译或加载 155
6.1.1 语法错误消息中的“幽灵”行号 155
6.1.2 缺少库 160
6.2 调试GUI程序 162
第7章 其他工具 172
7.1 充分利用文本编辑器 172
7.1.1 语法突出显示 172
7.1.2 匹配括号 174
7.1.3 Vim与makefile 175
7.1.4 makefile和编译器警告 176
7.1.5 关于将文本编辑器作为IDE的最后一个考虑事项 177
7.2 充分利用编译器 178
7.3 C语言中的错误报告 178
7.4 更好地使用strace和ltrace 182
7.5 静态代码检查器:lint与其衍生 184
7.5.1 如何使用splint 185
7.5.2 本节最后注意事项 185
7.6 调试动态分配的内存 185
7.6.1 检测DAM问题的策略 188
7.6.2 Electric Fence 188
7.6.3 用GNU C库工具调试DAM问题 190
第8章 对其他语言使用GDB/DDD/Eclipse 196
8.1 Java 196
8.1.1 直接使用GDB调试Java 198
8.1.2 使用DDD与GDB调试Java 201
8.1.3 使用DDD作为JDB的GUI 201
8.1.4 用Eclipse调试Java 201
8.2 Perl 202
8.2.1 通过DDD调试Perl 204
8.2.2 在Eclipse中调试Perl 206
8.3 Python 207
8.3.1 在DDD中调试Python 208
8.3.2 在Eclipse中调试Python 209
8.4 调试SWIG代码 210
8.5 汇编语言 213
信息管理技术-全国计算机等级考试三级教程-2011年版 本书特色 本书根据教育部考试中心制定的《全国计算机等级考试三级信息管理技术考试大纲(2007年版)》的要...
《微信营销与运营》内容简介:本书共分7章。第1章重点介绍了微信营销的概念、价值和特征,引导读者全面认识微信营销;第2章介绍了微
《阿里巴巴与四十大道》内容简介:本书是一本阿里巴巴小二写阿里巴巴公司的书,全书40章,汲取于阿里巴巴公司内部日常生活的点点滴
软件“风格”所要讨论的主题是如何在开销与功能之间、优雅与可维护性之间、灵活。性与过分灵活之间寻找完美的平街点。在本书中,
《思想的传承与决裂:以 “犹太人问题”为中心的考察》内容简介:在马克思早期思想演变中,青年黑格尔派是一个非常重要的思想背景和
《计算机组织与体系结构:性能设计》(第7版)是介绍当代计算机体系主流技术的最新技术的优秀教材。作者以IntelPentium4和IBM/Motor
《大隋兴衰四十年2:饥饿盛世》内容简介:被称为“圣人可汗”的不是唐太宗,而是隋文帝,单从这一点就足以管窥隋朝开皇年间堪比大唐
卫星的应用领域非常广,本书是一部系统介绍卫星的分类及其主要作用的著作,重点介绍了气象卫星、测绘卫星、军事成像卫星等,内容
《Photoshop智能手机APP界面设计》讲解三大智能手机(Android、iOS和WindowsPhone)APP用户界面(UI)的设计思路和制作过程。全书
《武则天5: 从三岁到八十二岁》内容简介:武则天82年的人生,前31年,她卷入权斗漩涡,为活命从宫女杀到了皇后的宝座;后51年,她
深入理解SOA与Web服务,对SOA进行全面介绍的实践指南:简化基础设施,发挥最大的机动性这是一本关于使用面向服务的架构(SOA,Se
《司法的长期主义》内容简介:本书的内容体现了最新成长起来的法律人的思维方式,代表了逐渐掌握话语权的新生代法律人的法治理念。
《欧游杂记》内容简介:1931年8月,朱自清留学英国进修语言学和英国文学,其间漫游欧洲五国,写下数篇游记,后结集为《欧游杂记》一
游戏场景设计 本书特色 本书共分五章:游戏场景设计概述、工具与表现阶段、观察分析与自我训练、构思与创作、优秀作品赏析。 本书内容深入浅出,与企业工作实际联系紧密...
《CSSWeb设计高级教程(第2版)》注重Web开发的实践,每章以现实中的Web站点为例,提供了很多容易理解的CSS技巧和技术,例如,如何
《李济平 邓定海传》内容简介:本书为雨花台烈士传丛书第四批之一,为李济、邓定海烈士的合传。李济于1927年加入中国,曾任扬州地委
《中国外资银行百年史(1845-1949)》内容简介:近代中国的外资银行是指以完全或部分外国资本在中国境内经营银行业务的金融机构,包
【编辑推荐】1.马云领衔创作,阿里集团权威解读“互联网+”。2.国务院发展研究中心专家审定,最官方、最权威的“互联网+”著作。
用户体验的优劣直接影响了网站能否成功实现自身的目标,如吸引访客点击、引导用户注册、说服顾客下单购买,等等。《众妙之门:We
成品Premiere Pr 实战从入门到精通 本书特色 《成品——Premiere Pro CC视频编辑剪辑制作实战从入门到精通》采用技术理论和具体案例相结合的...