软件调试第二版卷2最新版.pdf
http://www.100md.com
2020年10月31日
![]() |
| 第1页 |
![]() |
| 第10页 |
![]() |
| 第19页 |
![]() |
| 第23页 |
![]() |
| 第37页 |
![]() |
| 第160页 |
参见附件(67266KB,1030页)。
软件调试是2006年6月1日电子工业出版社出版的图书,作者是张银奎,主要讲述了包括CPU的调试、Windows操作系统中的调试设施、Visual C/C++编译器的调试支持,以及WinDBG调试器主要调试功能的应用实例

内容简介
田绕如何实现高效调试这一主题,本书深入系统地介绍了以调试器为核心的各种软件调试技术。本书共30童,分为6篇,第1篇介绍了软件调试的概况和简要历史。第2第以英特尔架构(IA)的CPU为例介绍了计算机系统的硬件核心所提供的调试支持,包括异常、断点指令、单步执行标志、分t监视.TAG和MCE等.第3第以Windows操作系统为例,介绍了计算机系统的软件核心中的调试设施,包括内核调试引擎、用户苏试子系统、异常处理、验证器、储误报告、事件追踪、故障转储、硬件情误处理等.第4萌以Visul CC++箱译器为例,介绍了生产软件的主要工具的调试支持,重点讨论了编译期检查、运行期检查及调试符号.第5篇讨论了软件的可测试性,探讨了如何在软件架构设计和软件开发过程中加入调试支糖,使软件更容易被调试,在前5篇内客的基础上,第6篇首先介绍了调试器的发展历史,典型功能和实现方法,然后全面介绍了WinDBG调试器,包括它的模块结构、工作模型、使用方法和主要调试功能的实现细节。
本书是对获件测试技术在过去50年中所取得成就的全面展示,也是对作者本人在软件设计和系统开发第一线奋战10多年的经验总结。本书理论与实践紧密结合,选取了大量具有代表性和普遍意义的技术细节进行讨论,是学习软件调试技术的宝费资料,适合每一位希望深刻理解软件和自由驾驭软件的人阅读特别是从事教件开发、测试、支持的技术人员和有关的研究人员.
历史回眸
我是1949年进入麻省理工学院(MIT)的,就在那一
年,第一台存储程序计算机在英国的剑桥和曼彻斯特开始运行。我的一个本科同学Kenneth Ralston是学数学的,他偶尔会和我如痴如醉地谈起一台神秘的机器,这台机器正在MIT附近的Smart街上的Barta楼内组装,我的好奇心后来在1954年的秋天得到了满足,那时我开始学习我的第一门计算机课程《数字计算机编码与逻辑》,那门课程是Charles Adams救的,他是自动编程(现在被称为编译)领域的先锋,当时使用的机器叫做旋风,被放置在一间充满了真空管电路的房间内,它由海军投资建立,用来研究飞机模拟。
因为我的知识背景及我所完成的电子工程专业的硕士课程,一个助研基金约请我在旋风计算机上用“最速下降法”解决一个最优化问题,这让我彻底熟悉了那一套繁琐的程序准备工作,我们以旋风机器的汇编语言编写程序,然后使用Friden电传打字机将以字符和数字表示的代码以打孔的方式输出到纸带上,纸带是用一个Ferrante光电读出器读入计算机的,然后交给“综合系统2”的“系统软件”进行处理.处理结果是一个二进制纸带,以大约每秒钟10行的速度打孔出来,每行代表一个6位字符。而后,用户可以调用一个简单的装载程序将二进制的纸带装入到2048字的内存中,装载程序是保存在几个可以换来换去的内存单元中的,之后就是期待程序的正常运行.用户也可以在控制台的电传打字机上调用“综合系统”的输出例程来把结果打印出来或者把它们写到一个原始的磁带单元中,宙特以后离线打印。
那时最漂亮的输出设备是CRT显示屏,用户可以在上面一个点一个点地面出图表和图片,上面装备了一个照相机,可以把显示的图片录制在胶片上,系统程序员们已经开发好了“崩溃照相”功能,可以把程序出错时内存中的内容显示在CRT上.
用户可以在第二天早上取到显影后的胶片,然后用一个缩微胶卷阅读器来研究上面的八进制数字,在那时,这是调试旋风程序的最主要方法,除此之外就是把中间结果打印出来。
本书写作的目的
在复杂的计算机系统中寻找软件缺陷的根源不是一个简单的任务,需要对软件和计算机系统有深刻的理解,选用科学的方法,并使用强有力的工具。这些正是作者写作本书的初衷。具体来说,写作本书有三个主要目的.
第一,论述软件调试的一般原理,包括CPU、操作系统和编译器是如何支持软件调试的,内核态调试和用户态调试的工作模型,以及调试器的工作原理。软件调试是计算机系统中多个部件之间的一个复杂交互过程,要理解这个过程,必须要了解每个部件在其中的角色和职责,以及它们的协作方式。学习软件调试原理不仅对提高软件工程师的调试技能至关重要,而且有利于提高它们对计算机系统的理解,将计算机原理、编译原理、操作系统等多个学科的知识融会贯通在一起.
第二·探讨可试性(Debuggablity)的内涵和实现软件可调试性的原则和方法。
所谓软件的可调试性就是在软件内部加入支持调试的代码,使其具有自动记录、报告和诊断的能力,从面更容易被调试,软件自身的可调试性对于提高调试效率、增强软件的可维护性,以及保证软件的如期交付都有着重要意义.
第三,交流软件调试的方法和技巧,尽管论述一般原理是本书的重点,本书仍穿插了许多实践性很强的内容。包括调试用户态租序和系统内核模块的基本方法,如何诊断系统崩溃(BSOD)和应用程序崩溃,如何训试缓冲区溢出等与栈有关的问题,如何课试内存泄漏等与堆有关的问题。特别是,本书非常全面地介绍了WinDBG调试器的使用方法,给出了大量使用这个调试器的实例.
总之,笔者希望通过本书让读者懂得软件调试的原理,意识到软件可调试性的重要性,学会使用基本的软件调试方法和调试工具,并能应用这些方法和工具解决问题和掌握更多软硬件知识
专家寄语
调试程序比编写程序更像一门艺术。程序员在调试程序时,想象力的基础是各种讲试技术,张银奎先生的这本书系统地介绍了各个层次上的程序调试技术,我相信每一位阅读这本书的程序员都可以丰富自己的训试知识库,从而在实践中碰到程序问题时有更丰富的想象力,快速地“遭"到程序代码中的“臭虫(Bug)".
一潘愛民,研究員,微較亚洲研究院
感谢张银奎给Syser Debugger开发提供了指导性的意见,张先生这本调试巨著详细介绍了关于软件调试的方方面面,是目前为止软件调试方面的最权威著作之一.相信这本书一定能让各位读者在软件调试和开发方面受益匪浅,这本书应该成为每个软件开发人员的必备宝典。
一吴君峰、陈俊豪,Syser调试器设计者
调试技术是成为高素原软件开发人员驱备的一项关键技术,可惜在中国技术界却没有得到应有的重视。本书秉承了Raynond一贯的技术传播特点与风格;循拓善诱,深入底层,切中肯紫,倒畅淋漓,相信本书公成为国内测试技术领域的扛鼎之作,每
“一位严肃程序员之案头必备.
一拳建忠,IT技术作译者,祝成科技培训讲师
软件调试第二版卷2截图



您现在查看是摘要介绍页, 详见PDF附件(67266KB,1030页)。





