作者:
Norman Matloff
/
Peter Jay Salzman
出版社: 人民邮电出版社
原作名: The Art of Debugging with GDB, DDD, and Eclipse
译者: 张云
出版年: 2009-11
页数: 216
定价: 39.00元
装帧: 平装
ISBN: 9787115213969
出版社: 人民邮电出版社
原作名: The Art of Debugging with GDB, DDD, and Eclipse
译者: 张云
出版年: 2009-11
页数: 216
定价: 39.00元
装帧: 平装
ISBN: 9787115213969
内容简介 · · · · · ·
调试对软件开发至关重要。然而,即使对于有经验的程序员,调试也并非易事。
本书是一部优秀的软件调试入门著作,对业界多年口口相传的调试经验做了很好的总结。书中通过丰富的C/C++实例,生动阐述了适用于各种平台与编程语言的通用调试原则、基础知识、经验技巧和相关的背景知识,详细讲解了Linux/Unix平台最受欢迎的三个调试工具——GDB、DDD和Eclipse,并讨论了网络、多线程、GUI和多核程序的调试等高级主题。不仅如此,书中还讲述了如何在调试中运用vim、gcc、errno和lint等工具,以及Java、Python、Perl和汇编等程序的调试。
作者简介 · · · · · ·
Norman Matloff 美国加州大学戴维斯分校计算机科学教授,研究领域涉及并行处理(尤其是软件分布式共享内存)、计算机通信网络、数据安全及数学和应用统计等。他编写了很多开源软件包,创作的在线教程也深受欢迎。
Peter Jay Salzman 美国加州大学戴维斯分校理论物理博士,该校Linux用户组的创建者,同时维护着多个受欢迎的在线HOWTO。现在华尔街某金融企业做程序员。
目录 · · · · · ·
第1章 预备知识 1
1.1 本书使用的调试工具 1
1.2 编程语言 2
1.3 调试的原则 2
1.3.1 调试的本质:确认原则 2
1.3.2 调试工具对于确认原则的价值所在 2
· · · · · · (更多)
1.1 本书使用的调试工具 1
1.2 编程语言 2
1.3 调试的原则 2
1.3.1 调试的本质:确认原则 2
1.3.2 调试工具对于确认原则的价值所在 2
· · · · · · (更多)
第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
· · · · · · (收起)
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
· · · · · · (收起)
喜欢读"软件调试的艺术"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"软件调试的艺术"的人也喜欢 · · · · · ·
软件调试的艺术的书评 · · · · · · ( 全部 8 条 )
一本不错的调试入门书籍
这篇书评可能有关键情节透露
一本不错的gdb调试入门书籍,只讲述了简单的调试命令和方法,还有一些调试的是思路,尤其是自顶向下和二分法调试,实际中更复杂的调试方法,比如多进程多线程还需要专门的学习和实践,比如左耳朵耗子在其博客上分享的一些文章,字数补丁。。。字数补丁。。。字数补丁。。。字数... (展开)> 更多书评 8篇
论坛 · · · · · ·
很实用的一本书,但是翻译太差了 | 来自刀巴 | 2 回应 | 2011-07-11 13:19:43 |
有谁找到电子版的赶紧分享一下啊~ | 来自reeze | 2 回应 | 2010-05-17 10:09:44 |
《软件调试实战》本月出版 | 来自冬天里的阳光 | 2009-12-17 10:25:27 | |
关注中中 | 来自毛鸿 | 2009-12-02 10:55:08 | |
关注中 | 来自毛鸿 | 2009-12-02 10:54:31 |
> 浏览更多话题
这本书的其他版本 · · · · · · ( 全部4 )
-
No Starch Press (2008)7.5分 39人读过
-
No Starch Press (2006)暂无评分 1人读过
-
オライリージャパン (2009)暂无评分
以下书单推荐 · · · · · · ( 全部 )
- 软件测试 (徐毅)
- 去圖書館才是正經事 (悟怡)
- IT 一级 信息技术(智力层次-实用性) 1.1.1 (ajian005)
- 计算机专业 (示云_好好生活)
- 软件工程 UML (神雕侠觅侣)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于软件调试的艺术的评论:
feed: rss 2.0
0 有用 黄不胖 2018-02-07 22:25:39
主要写了以GDB为主的C C++代码调试,以及其他程序错误避免技术。翻译有点小问题。刚入门的Linux 程序员很需要读一读。
0 有用 ly 2011-04-24 20:19:23
linux编程环境调试的入门读物,介绍的很基础,内容较少,适合初学者,其中对于ddd和eclipse的调试方法完全可以不用介绍
1 有用 y 2012-05-15 01:03:56
工作需要, piapiapia翻完就用上了. gdb的篇幅1/3+, ddd和eclipse占了3/2-, 有些遗憾.
0 有用 天行 2013-02-02 21:09:58
正如副标题说的适合*nix平台,主要介绍gdb,ddd,基本点有带到,但没有写到一个项目本身的gdb的应用,比较孤立吧。【电子版也有】
0 有用 sp 2014-05-31 11:48:46
翻译的太烂
0 有用 道满 2023-05-01 16:57:54 上海
应该叫《GDB调试参考手册》比较好,还不错,孩子再也不起vscode写Jason file去debug cpp了。
0 有用 清道夫 2022-08-28 19:41:05 北京
gdb
0 有用 踌躇月光 2022-08-15 17:06:20
比较基础!
0 有用 神秘人 2022-06-30 15:56:49
发现以前gdb调试有点水~~
0 有用 春树暮云 2022-03-20 17:44:29
对基本的调试方法介绍得还是较为全面的