电子书: |  中文书: |  英文书: |  今日新增: |  用户: |  欢迎新用户:
 最新动态:
网站已完美运行了:
交流群1
936073884
联系我
948870341@qq.com
点击这里给我发消息
原创

软件调试的艺术(PDF代码为图片格式).pdf 超清文字版

2019-11-11 16:27:42 rejoice 414 0
下载方式: 百度网盘下载 类别: 电子书 中文电子书,中文编程电子书 大小:未知
QQ截图20191111162631.png

目 录

第 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与make文件 ........................... 175

7.1.4 make文件和编译器警告 .............. 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

下载地址:已隐藏,需要2.88积分
方式1(在线支付):点击购买支付成功后,会自动刷新页面显示下载地址,
同时可以在右上角 昵称--个人中心--购买记录中查看且若资源不满意可申请退款
方式2(推荐):升级VIP
0     0     0    
猜您喜欢
助燃创新的人(揭示创新者如何激发无限的相邻可能,成为思想界的关键物种)2020-05[www.rejoiceblog.com].epub 电子书
2020-02-16 Sunday Magazine[www.rejoiceblog.com].pdf 电子书
Red Hat Linux 用户基础-红帽软件(北京)有限公司[www.rejoiceblog.com].pdf 电子书
The Essential Guide to Raising Complex Kids with ADHD, Anxiety, and More[www.rejoiceblog.com].epub 电子书
工作现场优选守则[www.rejoiceblog.com].azw3 电子书
条评论
助力榜
更多>>