v

您的位置:VeryCD图书计算机与网络

图书资源事务区


《程序调试思想与实践》(The Science of Debugging)扫描版[PDF]

  • 状态: 精华资源
  • 摘要:
    图书分类软件
    出版社中国水利水电出版社
    发行时间2002年03月
    语言简体中文
  • 时间: 2012/09/11 20:23:35 发布 | 2012/09/11 20:30:01 更新
  • 分类: 图书  计算机与网络 

[该用户已屏蔽]

精华资源: 77

全部资源: 79

相关: 分享到新浪微博   转播到腾讯微博   分享到开心网   分享到人人   分享到QQ空间   订阅本资源RSS更新   美味书签  subtitle
该内容尚未提供权利证明,无法提供下载。
中文名程序调试思想与实践
原名The Science of Debugging
译者邓劲生
图书分类软件
资源格式PDF
版本扫描版
出版社中国水利水电出版社
书号ISBN: 7508410084
发行时间2002年03月
地区美国
语言简体中文
简介


IPB Image

内容简介

本书将调试作为一门专业的学科进行研究和分析,提供大量的代码实例和问题描述,对调试的各个方面进行细致而深入的阐述和讨论。全书以bug为中心,围绕调试这一主题进行组织。第2章到第5章包括bug的诊断、分类以及它们的症状。第6章到第10章讨论那些处理bug的策略,包括可以使用的工具以及在不同情况下如何最有效地使用它们。第11章到第16章包括对专业调试的解释以及如何成为一个出色的调试员。
  
本书主要面向的读者群是软件项目的开发人员、调试人员、测试人员以及管理人员。
  

内容截图

IPB Image



目录

译者序
作者简介
致谢
第1章 debug简介
1.l 本书的内容
1.2 为什么要关注bug
1.3 什么是bug
1.4 本书的对象
1.5 本书的组织
1.6 调试简史
1.7 小结
1.8 bug问题
第2章 研究著名的(以及不太著名的)bug例子
2. 1 大致情况
2.1.1 现实生活中的分布式系统
2. 1.2 therac-25
2.2 bug实例#1
2. 3 bug实例#2
2. 4 bug实例#3
2.5 bug实例#4
.2.5.1 at&t电话中断
2. 5.2 缓冲区溢出
2.6 小结
2.7 bug问题
第3章 什么是bug
3.l 什么是bug
3.1.1 什么是软件缺陷
3. 1.2 调试不是什么
3.1.3 什么是调试
3. 2 为什么要考虑bug
3. 2. l bug的信心代价
3.2.2 名声和形象的代价
3. 2.3 bug的财产损失
3. 3 bug的本质
3. 3.l bug的发生都有原因
3. 3. 2 bug是可以重视的
3.3.3 bug通常在有变化时出现
3.3.4 bug也会产生bug
3.3.5 bug吸引bug
3.3.6 证明缺乏理解
3.3.7 难的代码对大家都一样难
3.3.8 在软件生命周期中不同阶段的bug有不同的性质
3.3.9 稳定的系统中的bug的原因可能比错误的系统中的bug的原因更难以识别
3.4 小结
3. 5 bug问题
第4章 bug的生命周期
4.l 为什么会出现bug
4. 1.1 复杂性
4. 1.2 现实
4. 1.3 人类的弱点
4. 2 bug是如何产生的
4. 2. 1 对软件做修改
4. 2.2 拙劣的描述
4.2.3 方法的复杂性
4. 2.4 缺少一致的观点
4.2.5 程序员错误
4. 3 bug是如何躲过测试的
4. 3.l 遵循形式过程代价太大
4.3.2 政策/市场决策
4.3. 3 时间不充分
4. 3.4 缺少重现能力
4. 3. 5 自负
4. 3.6 差劲的描述/不知道要测试什么
4. 3.7 缺乏测试环境
4.4 小结
4.5 bug问题
第5章 bug的分类
5.l bug的种类
5.1.1 需求阶段的bug
5.1.2 设计阶段的bug
5.1.3 实现阶段的bug
5.1.4 处理阶段的bug
5.1.5 编译的bug
5.1.6 配置的bug
5.1.7 未来计划bug
5.1.8 文档bug
5.2 严重性
5.3 bug分类法
5.3.l 名字
5.3.2 描述
5.3.3 最一般的环境
5.3.4 症状
5.3.5 例子
5.4 bug的分类
5.4.l 内存或资源泄漏
5.4.2 逻辑错误
5.4. 3 编码错误
5.4. 4 内存侵占
5. 4.5 循环错误
5.4.6 条件错误
5.4. 7 指针错误
5.4.8 分配/释放错误
5.4.9 多线程错误
5.4.10 定时错误
5.4. 11 分布式应用程序错误
5. 4.12 存储错误
5.4. 13 集成错误
5.4.14 转换错误
5.4.15 硬编码长度/尺寸
5.4. 16 版本bug
5.4. 17 不恰当地重用bug
5.4. 18 布尔bug
5.5 为什么分类重要
5.6 小结
5. 7 bug问题
第6章 检测工作
6.1 整体调试
6.1.1 复制和粘贴错误
6.l.2 全局变量
6.1.3 副作用
6.1.4 观察意外的消息或结果
6.1.5 跟踪诊断显示
6.2 调试方法
6.2.l 科学方法
6.2. 2 直觉
6.2.3 思维跳跃
6. 2.4 诊断
6. 3 商业技巧
6. 3.l 内嵌式调试器
6.3. 2 日志对象
6.3. 3 跟踪对象
6.3.4 隐藏的诊断屏
6.3.5 为以后的程序运行保存bug数据
6.4 可重现实例
6.4. 1 测试实例
6.4. 2 数据依赖
6.4. 3 从根本原因中分离症状
6.4. 4 收集观察结果
6.4. 5 统计论理
6.5 小结
6.6 bug问题
第7章 调试工具及其使用时机
7.l 测试和调试环境
7.1.1 测试组
7.1.2 测试套
7.1.3 过时的bug组
7.1.4 日志
7.l.5 跟踪
7.2 中级调试技术
7.2.1 内存漏洞检测工具
7.2.2 交叉索弓吸工具用法
7.2.3 调试器
7.2. 4 heisenberg的不确定原理
7.2.5 嵌入式诊断
7.2.6 断言的弊端
7.2. 7 同用户一起工作
7. 2. 8 bug跟踪
7.2.9 代码覆盖范围分析
7.2. 10 编译器
7.3 小结
7.4 bug问题
第8章 调试的一般过程
8.l 识别问题
8. l.l 这是bug吗
8.1.2 为什么它是一个bug
8.1.3 程序应该在做什么
8.1.4 程序到底在做什么
8.2 收集信息
8.2. 1 用户对问题的描述
8.2.2 日志文件
8.2.3 新自观察
8. 2.4 症状
8.2.5 失败的测试实例
8.2.6 相似的问题
8.2.7 近期变化
8.2.8 运行的环境信息
8.3 形成假设
8.4 测试假设
8.5 崩溃的web服务器示例
8.6 重复直到某个假设被证实
8.7 提出解决方法
8.8 测试解决方法
8.9 重复直到某个解决方法被证实
8.10 回归测试
8.11 小结
8.12 bug问题
第9章 调试技术
9.l 插入式调试和非插入式调试
9.2 短期调试和长期调试技术
9.3 成品软件调试的折衷办法
9.4 调试技术介绍
9.4. 1 面对实际用户
9.4. 2 查看观察日志
9.4.3 记录调试代码和过程
9.4.4 模拟代码和问题
9.4.5 简化重视性
9.4.6 把问题简化成最简单的元素
9.4.7 代码消去法
9.4. 8 简化法
9.4.9 使用调试器
9.4. 10 跳跃
9. 4.11 分解法
9. 4.12 种植错误法
9.4. 13 编译检测法
9.4.14 整体考虑法
9.4.15 使用不同操作系统上的另一个编译导
9.4.16 每次改变一个变量
9.4.17 数字命理学和边界条件
9.4.18 检查最近的修改
9.4. 19 清除系统中的"死代码"
9.4. 20 问题假设法
9.4.21 检查本测试的代码
9.4. 22 不变式法
9.4.23 存储器使用情况
9.4.24 互斥
9.4. 25 显示系统的运行情况
9.4. 26 和工作的系统进行代码比较
9.4.27 理解算法
9.4.28 检查连通性
9.4.29 核心文件
9.4.30 增加跟踪
9.4.31 数据关系检查
9.4.32 重放能力(记录动作)
9.4. 33 生成系统的副本
9.5 小结
9.6 bug问题
第10章 不同应用系统的调试
10.1 小规模单机系统
10.1.l 成为系统的用户
10.1.2 复制环境
10.1.3 提防dll hell
10.1.4 输入/输出错误
10.2 中规模单机系统
10.3 中规模客户/服务器系统
10.3.l 生成后端数据库的一个简单描述
10.3.2 保留数据的使用情况来发现哪些数据经常被使用
10.4 大规模系统
10.4.l 为测试安装一个"后门"
10.4. 2 观察外部条件的改变
10.5 实时系统
10.5.l 注意添加调试语句
10.5.2 监视硬件软件的冲突
10.5.3 时间问题
10.6 嵌入式系统
10.6.l 模拟器问题
10.6.2 抑制中断
10.6.3 协议错误
10.6.4 看门狗时钟
10.6.5 调试嵌入式系统
10.7 分布式系统
10.7.l 中间设备错误
10.7.2 预测错误
10.7. 3 连接错误
10.7.4 安全错误
10.7.5 信息数据库
10.7.6 记录的事后调查分析
10.8 模拟系统
10.8.l 封装硬件接口
10.8.2 把模拟调用封装成预测错误返回
10.8.3 把实际系统模拟器的问题简化成最简单的形式
10.9 小结
10.10 bug问题
第11章 调试之后
11.l 是不是在其他地方犯同样的错误
11.2 bug背后隐含了什么
11.3 怎样预防同类bug
11.3.l 理解原因
11.3. 2 保留测试用例
11. 3.3 利用bug为将来的设计
11.4 怎样更容易发现类似的 bug
11.4.1 创造工具
11.4.2 记录bug
11.4.3 预留调试框架
11.5 我是否有所进步
11.5.l bug量度
11.5.2 bug跟踪
11.5.3 怎样处理数据
11.6 小结
11.7 bug问题
第12章 bug预防
12. 1 什么是bug预防
12.2 一般技术
12. 2. 1 预防bug的人
12. 2.2 问题原因分析
12.2.3 检测错误
12.2.4 重用
12.2. 5 减小复杂度和管理复杂度
12.2.6 现实世界的文档
12.2.7 内部基础结构支持
12.3 需求中的bug预防
12.3.l 理解问题
12.3.2 正确获得需求
12.4 设计中的bug预防
12.4.1 不同的设计产生不同的bug类型
12.4. 2 设计接口
12.4.3 设计包含文档的代码
12. 5 实现中的bug预防
12.5.1 理解开发工具
12.5.2 防御编码
12.5.3 实现选择
12.5.4 逐步测试
12. 6 小结
12. 7 bug问题
第13章 测试
13. 1 单元测试
13.1.l 测试什么
13. 1.2 单元测试为什么重要
13. 1.3 怎样应用到调试中
13.1.4 单元测试有什么重要问题
13.2 验证测试
13.3 质量保证测试
13.4 测试方法
13.4.l 路径测试
13.4.2 事务处理测试
13.4.3 输入验证
13.4. 4 算法测试
13.4. 5 决策表
13.4. 6 状态机分析
13.4.7 综合测试
13.4. 8 自上向下测试和自下向上测试
13.4.9 配置调试
13.4.10 恢复崩溃和掉电测试
13.4.11 安全性测试
13. 4.12 第三方测试
13.4.13 多用户测试
13.4.14 负载和性能测试
13. 4.15 测量和统计
13.5 小结
13.6 bug问题
第14章 维护
14. 1 什么是软件维护
14.1.l 维护工作
14.1.2 维护的挑战
14.1.3 软件的退化需要软件维护
14. 2 创建一个可维护的软件系统
14.2. 1 创建可理解的软件
14.2. 2 可维护设计
14.2.3 提供一个回归测试环境
14. 2.4 创建一个可维护的环境
14.3 维护现有的软件
14.3.l 修改现有软件系统
14.3.2 围绕现有的需求和设计bug展开工作
14.3.3 彻底的回归测试
14.3.4 保持修改跟踪
14. 4 什么时候要放弃
14.5 小结
14. 6 bug问题
第15章 专业调试
15.1 学习成为一名调试员
15.1.l 在软件维护和改进组中工作
15.1.2 学习编写源代码的一个好办法
15.2 什么地方需要专业调试员
15.2.1 在设计阶段
15.2. 2 在需求阶段
15.2. 3 在代码审查阶段
15.2. 4 在代码移交阶段
15.2. 5 项目阶段总结
15.3 优秀专业调试者的特点
15.3.1 老练
15.3.2 耐性
15.3.3 探测技巧
15.3.4 处理压力的能力
15.3. 5 工程的/科学的方法
15.3.6 忘我
15.3.7 坚定不移
15.4 专业调试者的一天
15.5 小结
15.6 bug问题
附录a bug问题的答案
附录b 附加的阅读资料

正在读取……

这里是其它用户补充的资源(我也要补充):

暂无补充资源
正在加载,请稍等...

点击查看所有164网友评论

 

(?) [公告]留口水、评论相关规则 | [活动]每日签到 轻松领取电驴经验

    小贴士:
  1. 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  2. 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  3. 勿催片。请相信驴友们对分享是富有激情的,如果确有更新版本,您一定能搜索到。
  4. 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
  5. 如果您发现自己的评论不见了,请参考以上4条。