《软件调试的艺术》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:NormanMatloff,PeterJaySalzman编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115213969
  • 页数:216 页
图书介绍:本书介绍了三种Linux/Unix平台上的最流行的调试工具GDB、DDD和Eclipse,指导读者使用它们进行更高效的调式。同时,书中也给出了使用每个工具的建议,以及提高查找和修改代码错误过程的策略。

第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.1GDB方法 18

1.7.2同样的会话在DDD中的情况 31

1.7.3Eclipse中的会话 34

1.8启动文件的使用 38

第2章 停下来环顾程序 39

2.1暂停机制 39

2.2断点概述 39

2.3跟踪断点 40

2.3.1GDB中的断点列表 40

2.3.2DDD中的断点列表 41

2.3.3Eclipse中的断点列表 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.6DDD中的Undo/Redo断点动作 54

2.8进一步介绍浏览断点属性 55

2.8.1GDB 55

2.8.2DDD 56

2.8.3Eclipse 56

2.9恢复执行 56

2.9.1在GDB中 57

2.9.2在DDD中 64

2.9.3在Eclipse中 66

2.10条件断点 66

2.10.1GDB 67

2.10.2DDD 69

2.10.3Eclipse 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.5C++代码的情况 90

3.2.6监视局部变量 92

3.2.7直接检查内存 92

3.2.8print和display的高级选项 93

3.3从GDB/DDD/Eclipse中设置变量 93

3.4GDB自己的变量 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.4GDB线程命令汇总 133

5.2.5DDD中的线程命令 134

5.2.6Eclipse中的线程命令 134

5.3调试并行应用程序 136

5.3.1消息传递系统 136

5.3.2共享内存系统 141

5.4扩展示例 143

5.4.1OpenMP概述 143

5.4.2OpenMP示例程序 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.3Vim与makefile 175

7.1.4makefile和编译器警告 176

7.1.5关于将文本编辑器作为IDE的最后一个考虑事项 177

7.2充分利用编译器 178

7.3C语言中的错误报告 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.2Electric Fence 188

7.6.3用GNU C库工具调试DAM问题 190

第8章 对其他语言使用GDB/DDD/Eclipse 196

8.1Java 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.2Perl 202

8.2.1通过DDD调试Perl 204

8.2.2在Eclipse中调试Perl 206

8.3Python 207

8.3.1在DDD中调试Python 208

8.3.2在Eclipse中调试Python 209

8.4调试SWIG代码 210

8.5汇编语言 213