调试对于软件的成败至关重要,正确使用恰当的调试工具可以提高发现和改正错误的效率。《软件调试的艺术》详细介绍了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
《一只特立独行的猪》内容简介:《一只特立独行的猪》《沉默的大多数》《我的精神家园》三本杂文集,是走近王小波的三级台阶,本书
清新风-CG插画技法 本书特色 cg插画是一种新兴的绘画技术,主要应用于漫画和游戏领域,因其夺目的效果而得到众多二次元爱好者的认可和推崇。本书采用清新、绚丽、雅...
《真实世界的Python仪器监控:数据采集与控制系统自动化》介绍借助Python编程来实现对数据的自动化收集和处理,书中介绍的技巧除了
《爆发》内容简介:本书是一本超越《黑天鹅》的惊世之作。如果说塔勒布认为人类行为是随机的,都是小概率事件,是不可以预测的;那
全国计算机等级考试最新真考题库模拟考场及详解·二级MSOffice高级应用 内容简介 本书是针对2019年全国计算机等级二级考试编写的辅导用书。本书严格按照新版...
家庭电脑应用宝典 内容简介 本书由具有丰富教学与实践经验的微软认证专家编写,全面细致地介绍了微软*新操作系统Windows Vista在家庭应用方面的使用方法与...
LearnJavaScriptandjQueryanicerwayThisfull-colorbookadoptsavisualapproachtoteachi...
《汽车材料及轻量化趋势》内容简介:作为提高汽车燃油经济性的手段之一,轻量化并不是新鲜的技术名词。从20世纪70年代以来,汽车轻
这本书教你怎么用Bootstrap框架轻松设计出“杀手级”界面及响应式网站。从怎么用Bootstrap的HTML/CSS工具和现成模板构建页面开始
《信息场的开拓:未来后信息社会交互设计》针对当前世界范围内有关交互设计和信息设计的各种疑问,通过对于信息、信息设汁以及与当
CoreIDRAW X6平面设计与制作深度剖析-突破平面-含DVD 本书特色《突破平面coreldrawx6平面设计与制作深度剖析(附光盘平面设计与制作全彩印刷...
《神经网络》的主要内容有:神经网络的概念,神经网络的分类与学习方法,前向神经网络模型及其算法,改进的BP网络及其控制、辨识
《光明,那一页(精)》内容简介:本书为“四个一批”人才、光明日报社江苏记者站站长郑晋鸣的作品集。全书共收入郑晋鸣1998年以来
Photoshop调色.超简单!-(附光盘) 本书特色 随着数码相机的日益普及,数码照片的调修也成为广大数码摄影爱好者不断深入学习的新技术。《photoshop...
《明德学校史话》内容简介:本书依据宏富的史料,记述了明德学校艰苦卓绝的办学历程及其辉煌的办学业绩,展示了胡元倓等一批明德人
《我知道你在想什么:八卦心理学》内容简介:不灌心灵鸡汤,不堆专业名词,我们就是要剖析心理学的黑历史!马伯庸、曹天元、刘夙、
《深入分析GCC》内容简介:本书将围绕GCC编译过程,详细介绍从源代码到AST、从AST到GIMPLE、从GIMPLE到RTL,以及从RTL到最终的目标
遥感应用分析原理与方法-(第二版) 本书特色 本书是一本全面系统论述遥感原理及其应用分析方法的基础理论著作。全书共16章,包括三大部分内容。**部分:第1至第5...
移动通信行业自1995年以来经历了一个高速发展的时期,吸引了大量的人才。由于行业内部普遍薪酬较高,有稳定的发展空间,是即将毕
iOS开发如日中天,iOS6又为我们带来了大量的高级特性,从事移动开发的你,还等什么?本书急开发者之所急,揭秘了多数开发类图书未