软件调试的艺术

软件调试的艺术

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

本书适合各层次软件开发人员、管理人员和测试人员阅读。

内容简介

调试对于软件的成败至关重要,正确使用恰当的调试工具可以提高发现和改正错误的效率。本书详细介绍了3种调试器,GDB用于逐行跟踪程序、设置断点、检查变量以及查看特定时间程序的执行情况,DDD是流行的GDB的GUI前端,而Eclipse提供完整的集成开发环境。书中不但配合实例讨论了如何管理内存、理解转储内存、跟踪程序找出错误等内容,更涵盖了其他同类书忽略的主题,例如线程、客户/服务器、GUI和并行程序,以及如何躲开常见的调试陷阱。

作者简介

作者Norman Matloff, 美国加州大学戴维斯分校计算机科学教授,研究领域涉及并行处理(尤其是软件分布式共享内存)、计算机通信网络、数据安全及数学和应用统计等。他编写了很多开源软件包,创作的在线教程也深受欢迎。

章节目录

版权声明

前言

第1章 预备知识

1.1 本书使用的调试工具

1.2 编程语言

1.3 调试的原则

1.3.1 调试的本质:确认原则

1.3.2 调试工具对于确认原则的价值所在

1.3.3 其他调试原则

1.4 对比基于文本的调试工具与基于GUI的调试工具,两者之间的折中方案

1.4.1 简要比较界面

1.4.2 折中方法

1.5 主要调试器操作

1.5.1 单步调试源代码

1.5.2 检查变量

1.5.3 在GDB、DDD和Eclipse中设置监视点以应对变量值的改变

1.5.4 上下移动调用栈

1.6 联机帮助

1.7 初涉调试会话

1.7.1 GDB方法

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

1.7.3 Eclipse中的会话

1.8 启动文件的使用

第2章 停下来环顾程序

2.1 暂停机制

2.2 断点概述

2.3 跟踪断点

2.3.1 GDB中的断点列表

2.3.2 DDD中的断点列表

2.3.3 Eclipse中的断点列表

2.4 设置断点

2.4.1 在GDB中设置断点

2.4.2 在DDD中设置断点

2.4.3 在Eclipse中设置断点

2.5 展开GDB示例

2.6 断点的持久性

2.7 删除和禁用断点

2.7.1 在GDB中删除断点

2.7.2 在GDB中禁用断点

2.7.3 在DDD中删除和禁用断点

2.7.4 在Eclipse中删除和禁用断点

2.7.5 在DDD中“移动”断点

2.7.6 DDD中的Undo/Redo断点动作

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

2.8.1 GDB

2.8.2 DDD

2.8.3 Eclipse

2.9 恢复执行

2.9.1 在GDB中

2.9.2 在DDD中

2.9.3 在Eclipse中

2.10 条件断点

2.10.1 GDB

2.10.2 DDD

2.10.3 Eclipse

2.11 断点命令列表

2.12 监视点

2.12.1 设置监视点

2.12.2 表达式

第3章 检查和设置变量

3.1 主要示例代码

3.2 变量的高级检查和设置

3.2.1 在GDB中检查

3.2.2 在DDD中检查

3.2.3 在Eclipse中检查

3.2.4 检查动态数组

3.2.5 C++代码的情况

3.2.6 监视局部变量

3.2.7 直接检查内存

3.2.8 print和display的高级选项

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

3.4 GDB自己的变量

3.4.1 使用值历史

3.4.2 方便变量

第4章 程序崩溃处理

4.1 背景资料:内存管理

4.1.1 为什么程序会崩溃

4.1.2 内存中的程序布局

4.1.3 页的概念

4.1.4 页的角色细节

4.1.5 轻微的内存访问程序错误可能不会导致段错误

4.1.6 段错误与Unix信号

4.1.7 其他类型的异常

4.2 核心文件

4.2.1 核心文件的创建方式

4.2.2 某些shell可能禁止创建核心文件

4.3 扩展示例

4.3.1 第一个程序错误

4.3.2 在调试会话期间不要退出GDB

4.3.3 第二个和第三个程序错误

4.3.4 第四个程序错误

4.3.5 第五个和第六个程序错误

第5章 多活动上下文中的调试

5.1 调试客户/服务器网络程序

5.2 调试多线程代码

5.2.1 进程与线程回顾

5.2.2 基本示例

5.2.3 变体

5.2.4 GDB线程命令汇总

5.2.5 DDD中的线程命令

5.2.6 Eclipse中的线程命令

5.3 调试并行应用程序

5.3.1 消息传递系统

5.3.2 共享内存系统

5.4 扩展示例

5.4.1 OpenMP概述

5.4.2 OpenMP示例程序

第6章 特殊主题

6.1 根本无法编译或加载

6.1.1 语法错误消息中的“幽灵”行号

6.1.2 缺少库

6.2 调试GUI程序

调试curses程序

第7章 其他工具

7.1 充分利用文本编辑器

7.1.1 语法突出显示

7.1.2 匹配括号

7.1.3 Vim与makefile

7.1.4 makefile和编译器警告

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

7.2 充分利用编译器

7.3 C语言中的错误报告

使用errno

7.4 更好地使用strace和ltrace

7.5 静态代码检查器:lint与其衍生

7.5.1 如何使用splint

7.5.2 本节最后注意事项

7.6 调试动态分配的内存

7.6.1 检测DAM问题的策略

7.6.2 Electric Fence

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

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

8.1 Java

8.1.1 直接使用GDB调试Java

8.1.2 使用DDD与GDB调试Java

8.1.3 使用DDD作为JDB的GUI

8.1.4 用Eclipse调试Java

8.2 Perl

8.2.1 通过DDD调试Perl

8.2.2 在Eclipse中调试Perl

8.3 Python

8.3.1 在DDD中调试Python

8.3.2 在Eclipse中调试Python

8.4 调试SWIG代码

8.5 汇编语言

软件调试的艺术是2009年由人民邮电出版社·图灵出品出版,作者[美]Norman Matloff。

得书感谢您对《软件调试的艺术》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
软件外包概论 电子书
全书主要包括现代服务外包和软件外包的理论基础、软件外包业务中的商务活动、项目管理体系、工程管理体系、质量管理体系、风险管理体系、信息安全管理体系、运维项目管理体系、软件外包产业发展趋势、软件外包从业人员的职业发展、软件外包项目案例分析等内容。
软件工程 电子书
软件工程基本原理、技术、方法与项目管理。
计算机组装与调试维修 电子书
本书是一本详细讲解从计算机组装、调试到维护、优化和维修各方面技能的教程,全书共分为7章,围绕计算机硬件结构基础知识、计算机组装调试、计算机维护优化及计算机故障维修这几个功能模块梯度展开,又前后呼应、环环相扣。
软件测试效率手册 电子书
本书主要介绍软件测试技术,涵盖白盒测试、黑盒测试、性能测试和软件测试管理四部分内容。在单元测试、集成测试和功能测试中,基于已有的软件测试理论、方法,提出用“二八”定律思想来指导软件测试实践的探索,旨在帮助软件测试人员以较小成本测出更多问题,提升软件质量。本书以一个实际项目的测试案例贯穿始终,方便读者直观地理解软件测试相关理论,支持读者快速上手。
软件定义光网络 电子书
本书是一本关于软件定义光网络方面的学术专著,内容涉及软件定义光网络的概念原理、体系架构、关键技术和应用案例等,目的在于帮助读者能够更好地学习和掌握软件定义光网络的原理与技术。全书共分为10章,第1章为智能光网络发展概述;第2章介绍软件定义光网络的概念与技术特征;第3章介绍软件定义光网络的体系架构;第4章介绍软件定义光网络虚拟化技术;第5章为软件定义光网络多域控制技术;第6章介绍IP与光协同控制技术