软件下载站,为您提供安全的软件下载!

当前位置:首页 > 电脑专区 > 应用软件 > 电子阅读 > 软件调试-张银奎pdf高清晰电子版

软件调试-张银奎pdf高清晰电子版

分享到:
软件调试是学习软件调试技术的宝贵资料。现代计算机是从20世纪40年代开始出现的,在复杂的计算机系统中寻找软件的缺陷的根源不是一个简单的任务,需要对软件和计算机系统有深刻的理解,选用科学的方法,并使用强有力的工具。小编分享的这本软件调试共30章,分为6篇。第1篇介绍了软件调试的概况和简要历史。第2篇以英特尔架构(IA)的CPU为例,介绍了计算机系统的硬件核心所提供的调试支持,包括异常、断点指令、单步执行标志、分支监视、JTAG和MCE等。第3篇以Windows操作系统为例,介绍了计算机系统的软件核心中的调试设施,包括内核调试引擎、用户态调试子系统、异常处理、验证器、错误报告、事件追踪、故障转储、硬件错误处理等。第4篇以Visual.C/C++编译器为例,介绍了生产软件的主要工具的调试支持,重点讨论了编译期检查、运行期检查及调试符号。第5篇讨论了软件的可调试性,探讨了如何在软件架构设计和软件开发过程中加入调试支持,使软件更容易被调试。在前5篇内容的基础上,第6篇首先介绍了调试器的发展历史、典型功能和实现方法,然后全面介绍了WinDBG调试器,包括它的模块结构、工作模型、使用方法和主要调试功能的实现细节。软件调试适合每一位希望深刻理解软件和自由驾驭软件的人阅读,特别是从事软件开发、测试、支持的技术人员和有关的研究人员。
软件调试

软件调试目录:

第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.2 IA-32处理器
2.3 CPU的操作模式
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.4 DS示例:CpuWhere
5.5 性能监视
5.6 本章总结
第6章 机器检查架构(MCA)
6.1 奔腾处理器的机器检查机制
6.2 MCA
6.3 编写MCA软件
6.4 本章总结
第7章 JTAG调试
7.1 简介
7.2 JTAG原理
7.3 JTAG应用
7.4 IA-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.7 NTDLL中的调试支持例程
9.8 调试API 224
9.9 本章总结
第10章 用户态调试过程
10.1 调试器进程
10.2 被调试进程
10.3 从调试器中启动被调试程序
10.4 附加到已经启动的进程
10.5 处理调试事件
10.6 中断到调试器
10.7 输出调试字符串
10.8 终止调试会话
10.9 本章总结
第11章 中断和异常管理
第12章 未处理异常和JIT调试
第13章 硬错误和蓝屏
第14章 错误报告
第15章 日志
第16章 事件追踪
第17章 WHEA
第18章 内核调试引擎
第19章 Windows的验证机制
第4篇 编译器的调试支持
第20章 编译和编译期检查
第21章 运行库和运行期检查
第22章 栈和函数调用
第23章 堆和堆检查
第24章 异常处理代码的编译
第25章 调试符号
第5篇 可调试性
第26章 可调试性概览
第27章 可调试性的实现
第6篇 调试器
第28章 调试器概览
第29章 WinDBG及其实现
第30章 WinDBG用法详解
附录A 示例程序列表
附录B WinDBG标准命令列表
索引

免责声明:

来源于网络,仅用于分享知识,学习和交流!请下载完在24小时内删除。
禁用于商业用途!如果您喜欢《软件调试》,请购买正版,谢谢合作。
爱学习,请到3322软件站查找资源自行下载!

精彩文摘:

......
第1篇 绪论
第1章 软件调试基础
1955年,一个名叫Computer.Usage.Corporation(CUC)的公司诞生了,它是世界上第一个专门从事软件开发和服务的公司。CUC公司的创始人是Elmer.Kubie和John.w.Sheldon,他们都在IBM工作过。从当时计算机硬件的迅速发展中,他们看到了软件方面所潜在的机遇。CUC的诞生标志着一个新兴的产业正式起步了。
与其他产业相比,软件产业的发展速度是惊人的。短短50几年后,我们已经难以统计世界上共有多少个软件公司,只知道一定是一个很庞大的数字,而且这个数量还在不断增大。同时,软件产品的数量也达到了难以统计的程度,各种各样的软件已经渗透到人类生产和生活的各个领域,越来越多的人开始依赖软件工作和生活。
与传统的产品相比,软件产品具有根本的不同,其生产过程也有着根本的差异。在开发软件的整个过程中,存在非常多的不确定性因素。在一个软件真正完成之前,很难预计它的完成日期。很多软件项目都经历了多次的延期,还有很多中途夭折。直到今天,人们还没有找到一种有效的方法来控制软件的生产过程。导致软件生产难以控制的根本原因是来源于软件本身的复杂性。一个软件的规模越大,它的复杂度也越高。
简单来说,软件是程序(program)和文档(document)的集合,程序的核心内容便是按一定顺序排列的一系列指令(instruction)。如果把每个指令看作一块积木,那么软件开发就是使用这些积木修建一个让CPU(中央处理器)在其中运行的交通系统。这个系统中有很多条不同特征的道路(函数)。有些道路只允许一辆车在上面行驶,一辆车驶出后另一辆才能进入,有些道路可以让无数辆车同时在上面飞奔。这些道路都是单行道,只可以沿一个方向行驶。在这些道路之间,除了明确的入口(entry)和出口(exit)之外,还可以通过中断和异常等机制从一条路飞越到另一条,另一条又可以飞转到第三条或直接飞回到第一条。在这个系统中行驶的车辆也很特殊,它们速度很快,而且“无人驾驶”,完全不知道会跑到哪里,唯一的原则就是上了一条路便沿着它向前跑……
如果说软件的执行过程就好像是CPU在无数条道路(指令流)间飞奔,那么开发软件的过程就是设计和构建这个交通网络的过程。其基本目标是要让CPU在这个网络中奔跑时可以完成需求(requirement)中所定义的功能。对这个网络的其他要求通常还有可靠(reliable)、灵活(flexible)、健壮(robust)、易于维护(maintainable),可以简单地改造就能让其他类型的车辆(CPU)在上面行驶(portable)……
开发一个满足以上要求的软件系统不是一件简单的事,通常需要经历分析(analysis)、设计(design)、编码(code)和测试(test)等多个环节。通过测试并发布(release)后,还需要维护(maintain)和支持(support)工作。在以上环节中,每一步都可能遇到这样那样的技术难题。
在软件世界中,螺丝刀、万用表等传统的探测和修理工具都不再适用了,取而代之的是以调试器为核心的各种软件调试(Software Debugging)工具。
软件调试的基本手段有断点、单步执行、栈回溯等,其初衷就是跟踪和记录CPU执行软件的过程,把动态的瞬间凝固下来供检查和分析。
软件调试的基本目标是定位软件中存在的设计错误(bug)。但除此之外,软件调试技术和工具还有很多其他用途。比如,分析软件的工作原理,分析系统崩溃,辅助解决系统和硬件问题等。
概而言之,软件是通过指令的组合来指挥硬件,既简单,又复杂,充满神秘与挑战。而软件调试是帮助人们探索和征服这个神秘世界的有力工具。
第1章 软件调试基础
著名的计算机科学家Brian Kernighan曾经说过,软件调试要比编写代码困难一倍,如果你发挥出了最佳才智编写代码,那么你的智商便不足以调试这个代码。
……

下载说明:

方法一:
1、下载并解压,得出pdf文件
2、如果打不开本文件,别着急,这时候请务必在3322软件站选择一款阅读器下载哦
3、安装后,再打开解压得出的pdf文件
4、以上都完成后,接下来双击进行阅读就可以啦,朋友们开启你们的阅读之旅吧。
方法二:
1、可以在手机里下载3322软件站中的阅读器和百度网盘
2、接下来直接将pdf传输到百度网盘
3、用阅读器打开即可阅读
展开更多

软件截图

下载提示

软件调试-张银奎pdf高清晰电子版

正在下载...

扫描二维码,手机下载APP

软件下载站本地下载

相关文章