软件调试:Software Debugging

软件调试:Software Debugging
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2008-06
版次: 1
ISBN: 9787121064074
定价: 128.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 1006页
字数: 1200千字
正文语种: 简体中文
271人买过
  •   围绕如何实现高效调试这一主题,本书深入系统地介绍了以调试器为核心的各种软件调试技术。本书共30章,分为6篇。第1篇介绍了软件调试的概况和简要历史。第2篇以英特尔架构(IA)的CPU为例,介绍了计算机系统的硬件核心所提供的调试支持,包括异常、断点指令、单步执行标志、分支监视、JTAG和MCE等。第3篇以Windows操作系统为例,介绍了计算机系统的软件核心中的调试设施,包括内核调试引擎、用户态调试子系统、异常处理、验证器、错误报告、事件追踪、故障转储、硬件错误处理等。第4篇以VisualC/C++编译器为例,介绍了生产软件的主要工具的调试支持,重点讨论了编译期检查、运行期检查及调试符号。第5篇讨论了软件的可调试性,探讨了如何在软件架构设计和软件开发过程中加入调试支持,使软件更容易被调试。在前5篇内容的基础上,第6篇首先介绍了调试器的发展历史、典型功能和实现方法,然后全面介绍了WinDBG调试器,包括它的模块结构、工作模型、使用方法和主要调试功能的实现细节。
      本书是对软件调试技术在过去50年中所取得成就的全面展示,也是对作者本人在软件设计和系统开发第一线奋战10多年的经验总结。本书理论与实践紧密结合,选取了大量具有代表性和普遍意义的技术细节进行讨论,是学习软件调试技术的宝贵资料,适合每一位希望深刻理解软件和自由驾驭软件的人阅读,特别是从事软件开发、测试、支持的技术人员和有关的研究人员。 张银奎,高级软件工程师,高端调试网站主要创始人,《程序员 》杂志“软件调试”专栏作者 第1篇绪论
    第1章软件调试基础
    1.1简介
    1.2基本特征
    1.3简要历史
    1.4分类
    1.5调试技术概览
    1.6错误与缺欠
    1.7与软件工程的关系
    1.8本章总结
    第2篇CPU的调试支持
    第2章CPU基础
    2.1指令和指令集
    2.2IA-32处理器
    2.3CPU的操作模式
    2.4寄存器
    2.5理解保护模式
    2.6段机制
    2.7分页机制(Paging)
    2.8系统概貌
    2.9本章总结
    第3章中断和异常
    3.1概念和差异
    3.2异常的分类
    3.3异常例析
    3.4中断/异常优先级
    3.5中断/异常处理
    3.6本章总结
    第4章断点和单步执行
    4.1软件断点
    4.2硬件断点
    4.3陷阱标志
    4.4实模式调试器例析
    4.5本章总结
    第5章分支记录和性能监视
    5.1分支监视概览
    5.2使用寄存器的分支记录
    5.3使用内存的分支记录
    5.4DS示例:CpuWhere
    5.5性能监视
    5.6本章总结
    第6章机器检查架构(MCA)
    6.1奔腾处理器的机器检查机制
    6.2MCA
    6.3编写MCA软件
    6.4本章总结
    第7章JTAG调试
    7.1简介
    7.2JTAG原理
    7.3JTAG应用
    7.4IA-32处理器的JTAG支持
    7.5本章总结
    第3篇操作系统的调试支持
    第8章Windows概要
    8.1简介
    8.2进程和进程空间
    8.3内核模式和用户模式
    8.4架构和系统部件
    8.5本章总结
    第9章用户态调试模型
    9.1概览
    9.2采集调试消息
    9.3发送调试消息
    9.4调试子系统服务器(XP之后)
    9.5调试子系统服务器(XP之前)
    9.6比较两种模型
    9.7NTDLL中的调试支持例程
    9.8调试API224
    9.9本章总结
    第10章用户态调试过程
    10.1调试器进程
    10.2被调试进程
    10.3从调试器中启动被调试程序
    10.4附加到已经启动的进程
    10.5处理调试事件
    10.6中断到调试器
    10.7输出调试字符串
    10.8终止调试会话
    10.9本章总结
    第11章中断和异常管理
    11.1中断描述符表
    11.2异常的描述和登记
    11.3异常分发过程
    11.4结构化异常处理(SEH)
    11.5向量化异常处理(VEH)
    11.6本章总结
    第12章未处理异常和JIT调试
    12.1简介
    12.2默认的异常处理器
    12.3未处理异常过滤函数
    12.4应用程序错误对话框
    12.5JIT调试和Dr.Watson
    12.6顶层异常过滤函数
    12.7Dr.Watson
    12.8DRWTSN32的日志文件
    12.9用户态转储文件
    12.10本章总结
    第13章硬错误和蓝屏
    13.1硬错误提示
    13.2蓝屏终止(BSOD)
    13.3系统转储文件
    13.4分析系统转储文件
    13.5辅助的错误提示方法
    13.6配置错误提示机制
    13.7防止滥用错误提示机制
    13.8本章总结
    第14章错误报告
    14.1WER1.0
    14.2系统错误报告
    14.3WER服务器端
    14.4WER2.0
    14.5CER
    14.6本章总结
    第15章日志
    15.1日志简介
    15.2ELF的架构
    15.3ELF的数据组织
    15.4察看和使用ELF日志
    15.5CLFS的组成和原理
    15.6CLFS的使用方法
    15.7本章总结
    第16章事件追踪
    16.1简介
    16.2ETW的架构
    16.3提供ETW消息
    16.4控制ETW会话
    16.5消耗ETW消息
    16.6格式描述
    16.7NTKernelLogger
    16.8GlobalLoggerSession
    16.9CrimsonAPI
    16.10本章总结
    第17章WHEA
    17.1目标和架构
    17.2错误源
    17.3错误处理过程
    17.4错误持久化
    17.5注入错误
    17.6本章总结
    第18章内核调试引擎
    18.1概览
    18.2连接
    18.3启用
    18.4初始化
    18.5内核调试协议
    18.6与内核交互
    18.7建立和维持连接
    18.8本地内核调试
    18.9本章总结
    第19章Windows的验证机制
    19.1简介
    19.2驱动验证器的工作原理
    19.3使用驱动验证器
    19.4应用程序验证器的工作原理
    19.5使用应用程序验证器
    19.6本章总结
    第4篇编译器的调试支持
    第20章编译和编译期检查
    20.1程序的构建过程
    20.2编译
    20.3VisualC++编译器
    20.4编译错误和警告
    20.5编译期检查
    20.6标准标注语言
    20.7本章总结
    第21章运行库和运行期检查
    21.1C/C++运行库
    21.2链接运行库
    21.3运行库的初始化和清理
    21.4运行期检查
    21.5报告运行期检查错误
    21.6本章总结
    第22章栈和函数调用
    22.1简介
    22.2栈的创建过程
    22.3CALL和RET指令
    22.4局部变量和栈帧
    22.5帧指针省略(FPO)
    22.6栈指针检查
    22.7调用协定
    22.8栈空间的增长和溢出
    22.9栈下溢
    22.10缓冲区溢出
    22.11变量检查
    22.12基于Cookie的安全检查
    22.13本章总结
    第23章堆和堆检查
    23.1理解堆
    23.2堆的创建和销毁
    23.3分配和释放堆块
    23.4堆的内部结构
    23.5低碎片堆(LFH)
    23.6堆的调试支持
    23.7栈回溯数据库
    23.8堆溢出和检测
    23.9页堆
    23.10准页堆
    23.11CRT堆
    23.12CRT堆的调试堆块
    23.13CRT堆的调试功能
    23.14堆块转储
    23.15泄漏转储
    23.16本章总结
    第24章异常处理代码的编译
    24.1概览
    24.2FS:[0]链条
    24.3遍历FS:[0]链条
    24.4执行异常处理函数
    24.5__try{}__except()结构
    24.6安全问题
    24.7本章总结
    第25章调试符号
    25.1名称修饰
    25.2调试信息的存储格式
    25.3目标文件中的调试信息
    25.4PE文件中的调试信息
    25.5DBG文件
    25.6PDB文件
    25.7有关的编译和链接选项
    25.8PDB文件中的数据表
    25.9本章总结
    第5篇可调试性
    第26章可调试性概览
    26.1简介
    26.2Showstopper和未雨绸缪
    26.3基本原则
    26.4不可调试代码
    26.5可调试性例析
    26.6与安全、性能和商业秘密的关系
    26.7本章总结
    第27章可调试性的实现
    27.1角色和职责
    27.2可调试架构
    27.3通过栈回溯实现可追溯性
    27.4数据的可追溯性
    27.5可观察性的实现
    27.6自检和自动报告
    27.7本章总结
    第6篇调试器
    第28章调试器概览
    28.1TX-0计算机和FLIT调试器
    28.2小型机和DDT调试器
    28.3个人计算机和它的调试器
    28.4调试器的功能
    28.5分类标准
    28.6实现模型
    28.7经典架构
    28.8HPD标准
    28.9本章总结
    第29章WinDBG及其实现
    29.1WinDBG溯源
    29.2C阶段的架构
    29.3重构
    29.4调试器引擎的架构
    29.5调试目标
    29.6调试会话
    29.7接收和处理命令
    29.8本章总结
    第30章WinDBG用法详解
    30.1工作空间
    30.2命令概览
    30.3用户界面
    30.4输入和执行命令
    30.5建立调试会话
    30.6终止调试会话
    30.7理解上下文
    30.8调试符号
    30.9事件处理
    30.10控制调试目标
    30.11单步执行
    30.12使用断点
    30.13控制进程和线程
    30.14观察栈
    30.15分析内存
    30.16遍历链表
    30.17调用目标程序的函数
    30.18命令程序
    30.19本章总结
    附录A示例程序列表
    附录BWinDBG标准命令列表
    索引
  • 内容简介:
      围绕如何实现高效调试这一主题,本书深入系统地介绍了以调试器为核心的各种软件调试技术。本书共30章,分为6篇。第1篇介绍了软件调试的概况和简要历史。第2篇以英特尔架构(IA)的CPU为例,介绍了计算机系统的硬件核心所提供的调试支持,包括异常、断点指令、单步执行标志、分支监视、JTAG和MCE等。第3篇以Windows操作系统为例,介绍了计算机系统的软件核心中的调试设施,包括内核调试引擎、用户态调试子系统、异常处理、验证器、错误报告、事件追踪、故障转储、硬件错误处理等。第4篇以VisualC/C++编译器为例,介绍了生产软件的主要工具的调试支持,重点讨论了编译期检查、运行期检查及调试符号。第5篇讨论了软件的可调试性,探讨了如何在软件架构设计和软件开发过程中加入调试支持,使软件更容易被调试。在前5篇内容的基础上,第6篇首先介绍了调试器的发展历史、典型功能和实现方法,然后全面介绍了WinDBG调试器,包括它的模块结构、工作模型、使用方法和主要调试功能的实现细节。
      本书是对软件调试技术在过去50年中所取得成就的全面展示,也是对作者本人在软件设计和系统开发第一线奋战10多年的经验总结。本书理论与实践紧密结合,选取了大量具有代表性和普遍意义的技术细节进行讨论,是学习软件调试技术的宝贵资料,适合每一位希望深刻理解软件和自由驾驭软件的人阅读,特别是从事软件开发、测试、支持的技术人员和有关的研究人员。
  • 作者简介:
    张银奎,高级软件工程师,高端调试网站主要创始人,《程序员 》杂志“软件调试”专栏作者
  • 目录:
    第1篇绪论
    第1章软件调试基础
    1.1简介
    1.2基本特征
    1.3简要历史
    1.4分类
    1.5调试技术概览
    1.6错误与缺欠
    1.7与软件工程的关系
    1.8本章总结
    第2篇CPU的调试支持
    第2章CPU基础
    2.1指令和指令集
    2.2IA-32处理器
    2.3CPU的操作模式
    2.4寄存器
    2.5理解保护模式
    2.6段机制
    2.7分页机制(Paging)
    2.8系统概貌
    2.9本章总结
    第3章中断和异常
    3.1概念和差异
    3.2异常的分类
    3.3异常例析
    3.4中断/异常优先级
    3.5中断/异常处理
    3.6本章总结
    第4章断点和单步执行
    4.1软件断点
    4.2硬件断点
    4.3陷阱标志
    4.4实模式调试器例析
    4.5本章总结
    第5章分支记录和性能监视
    5.1分支监视概览
    5.2使用寄存器的分支记录
    5.3使用内存的分支记录
    5.4DS示例:CpuWhere
    5.5性能监视
    5.6本章总结
    第6章机器检查架构(MCA)
    6.1奔腾处理器的机器检查机制
    6.2MCA
    6.3编写MCA软件
    6.4本章总结
    第7章JTAG调试
    7.1简介
    7.2JTAG原理
    7.3JTAG应用
    7.4IA-32处理器的JTAG支持
    7.5本章总结
    第3篇操作系统的调试支持
    第8章Windows概要
    8.1简介
    8.2进程和进程空间
    8.3内核模式和用户模式
    8.4架构和系统部件
    8.5本章总结
    第9章用户态调试模型
    9.1概览
    9.2采集调试消息
    9.3发送调试消息
    9.4调试子系统服务器(XP之后)
    9.5调试子系统服务器(XP之前)
    9.6比较两种模型
    9.7NTDLL中的调试支持例程
    9.8调试API224
    9.9本章总结
    第10章用户态调试过程
    10.1调试器进程
    10.2被调试进程
    10.3从调试器中启动被调试程序
    10.4附加到已经启动的进程
    10.5处理调试事件
    10.6中断到调试器
    10.7输出调试字符串
    10.8终止调试会话
    10.9本章总结
    第11章中断和异常管理
    11.1中断描述符表
    11.2异常的描述和登记
    11.3异常分发过程
    11.4结构化异常处理(SEH)
    11.5向量化异常处理(VEH)
    11.6本章总结
    第12章未处理异常和JIT调试
    12.1简介
    12.2默认的异常处理器
    12.3未处理异常过滤函数
    12.4应用程序错误对话框
    12.5JIT调试和Dr.Watson
    12.6顶层异常过滤函数
    12.7Dr.Watson
    12.8DRWTSN32的日志文件
    12.9用户态转储文件
    12.10本章总结
    第13章硬错误和蓝屏
    13.1硬错误提示
    13.2蓝屏终止(BSOD)
    13.3系统转储文件
    13.4分析系统转储文件
    13.5辅助的错误提示方法
    13.6配置错误提示机制
    13.7防止滥用错误提示机制
    13.8本章总结
    第14章错误报告
    14.1WER1.0
    14.2系统错误报告
    14.3WER服务器端
    14.4WER2.0
    14.5CER
    14.6本章总结
    第15章日志
    15.1日志简介
    15.2ELF的架构
    15.3ELF的数据组织
    15.4察看和使用ELF日志
    15.5CLFS的组成和原理
    15.6CLFS的使用方法
    15.7本章总结
    第16章事件追踪
    16.1简介
    16.2ETW的架构
    16.3提供ETW消息
    16.4控制ETW会话
    16.5消耗ETW消息
    16.6格式描述
    16.7NTKernelLogger
    16.8GlobalLoggerSession
    16.9CrimsonAPI
    16.10本章总结
    第17章WHEA
    17.1目标和架构
    17.2错误源
    17.3错误处理过程
    17.4错误持久化
    17.5注入错误
    17.6本章总结
    第18章内核调试引擎
    18.1概览
    18.2连接
    18.3启用
    18.4初始化
    18.5内核调试协议
    18.6与内核交互
    18.7建立和维持连接
    18.8本地内核调试
    18.9本章总结
    第19章Windows的验证机制
    19.1简介
    19.2驱动验证器的工作原理
    19.3使用驱动验证器
    19.4应用程序验证器的工作原理
    19.5使用应用程序验证器
    19.6本章总结
    第4篇编译器的调试支持
    第20章编译和编译期检查
    20.1程序的构建过程
    20.2编译
    20.3VisualC++编译器
    20.4编译错误和警告
    20.5编译期检查
    20.6标准标注语言
    20.7本章总结
    第21章运行库和运行期检查
    21.1C/C++运行库
    21.2链接运行库
    21.3运行库的初始化和清理
    21.4运行期检查
    21.5报告运行期检查错误
    21.6本章总结
    第22章栈和函数调用
    22.1简介
    22.2栈的创建过程
    22.3CALL和RET指令
    22.4局部变量和栈帧
    22.5帧指针省略(FPO)
    22.6栈指针检查
    22.7调用协定
    22.8栈空间的增长和溢出
    22.9栈下溢
    22.10缓冲区溢出
    22.11变量检查
    22.12基于Cookie的安全检查
    22.13本章总结
    第23章堆和堆检查
    23.1理解堆
    23.2堆的创建和销毁
    23.3分配和释放堆块
    23.4堆的内部结构
    23.5低碎片堆(LFH)
    23.6堆的调试支持
    23.7栈回溯数据库
    23.8堆溢出和检测
    23.9页堆
    23.10准页堆
    23.11CRT堆
    23.12CRT堆的调试堆块
    23.13CRT堆的调试功能
    23.14堆块转储
    23.15泄漏转储
    23.16本章总结
    第24章异常处理代码的编译
    24.1概览
    24.2FS:[0]链条
    24.3遍历FS:[0]链条
    24.4执行异常处理函数
    24.5__try{}__except()结构
    24.6安全问题
    24.7本章总结
    第25章调试符号
    25.1名称修饰
    25.2调试信息的存储格式
    25.3目标文件中的调试信息
    25.4PE文件中的调试信息
    25.5DBG文件
    25.6PDB文件
    25.7有关的编译和链接选项
    25.8PDB文件中的数据表
    25.9本章总结
    第5篇可调试性
    第26章可调试性概览
    26.1简介
    26.2Showstopper和未雨绸缪
    26.3基本原则
    26.4不可调试代码
    26.5可调试性例析
    26.6与安全、性能和商业秘密的关系
    26.7本章总结
    第27章可调试性的实现
    27.1角色和职责
    27.2可调试架构
    27.3通过栈回溯实现可追溯性
    27.4数据的可追溯性
    27.5可观察性的实现
    27.6自检和自动报告
    27.7本章总结
    第6篇调试器
    第28章调试器概览
    28.1TX-0计算机和FLIT调试器
    28.2小型机和DDT调试器
    28.3个人计算机和它的调试器
    28.4调试器的功能
    28.5分类标准
    28.6实现模型
    28.7经典架构
    28.8HPD标准
    28.9本章总结
    第29章WinDBG及其实现
    29.1WinDBG溯源
    29.2C阶段的架构
    29.3重构
    29.4调试器引擎的架构
    29.5调试目标
    29.6调试会话
    29.7接收和处理命令
    29.8本章总结
    第30章WinDBG用法详解
    30.1工作空间
    30.2命令概览
    30.3用户界面
    30.4输入和执行命令
    30.5建立调试会话
    30.6终止调试会话
    30.7理解上下文
    30.8调试符号
    30.9事件处理
    30.10控制调试目标
    30.11单步执行
    30.12使用断点
    30.13控制进程和线程
    30.14观察栈
    30.15分析内存
    30.16遍历链表
    30.17调用目标程序的函数
    30.18命令程序
    30.19本章总结
    附录A示例程序列表
    附录BWinDBG标准命令列表
    索引
查看详情
相关图书 / 更多
软件调试:Software Debugging
软件工程(第7版微课版十三五职业教育国家规划教材)
高树芳 主编
软件调试:Software Debugging
软件测试技术任务驱动式教程(第2版)
吴伶琳、王明珠 编
软件调试:Software Debugging
软件工程实践教程:基于开源和群智的方法
毛新军;王涛;余跃
软件调试:Software Debugging
软件测试
崔义 主编;任淑艳
软件调试:Software Debugging
软件性能测试实战教程(LoadRunner与JMeter)
周百顺 主编;张伟
软件调试:Software Debugging
软件测试基础教程 软硬件技术 高尚兵,高丽主编 新华正版
高尚兵,高丽主编
软件调试:Software Debugging
软件工程--理论与实践
毛新军 董威
软件调试:Software Debugging
软件文化基础(第二版)
覃征;党璇;易建山;王国龙;张紫欣;徐树皓;吴浔
软件调试:Software Debugging
软件安全
邹德清
软件调试:Software Debugging
软件需求工程方法与实践
金芝、刘璘、陈小红、李童
软件调试:Software Debugging
软件工程原理与实践 沈备军 万成城 陈昊鹏 陈雨亭
沈备军 万成城 陈昊鹏 陈雨亭
软件调试:Software Debugging
软件化雷达模型重构与数据流仿真技术
王磊
您可能感兴趣 / 更多
软件调试:Software Debugging
软件调试第2版卷2Windows平台调试上、下册
张银奎 著
软件调试:Software Debugging
软件调试第2版卷1:硬件基础
张银奎 著
软件调试:Software Debugging
21世纪机器人
张银奎 译
软件调试:Software Debugging
格蠹汇编:软件调试案例集锦
张银奎 著