内容提要
本书围绕C/C++程序调试这一主题,系统深入地介绍了在Windows和Linux操作系统上如何高效地调试C/C++程序。
本书分为11章,内容涵盖了程序调试的基本知识、Visual C++调试程序的基本功能与技巧、Linux系统中gdb工具的使用、死锁调试、动态库调试、内存泄漏检查、远程调试、崩溃转储文件分析、发行版调试,以及调试的高级话题和调试扩展方面的知识。
本书作为学习C/C++调试技术的重要资料,讲解通俗易懂,选取的示例注重理论与实际的联系。无论是C/C++的初学者,还是经验丰富的开发人员,都会从中受益。
作者简介
张海洋,云坞科技联合创始人,清华大学计算机专业毕业,从事软件开发近20年,曾在外企工作10多年,长期工作在开发第一线。当前已经在国内外申请软件发明专利10多项;精通C/C++、Python等语言,在Windows/Linux驱动、Windows/Linux系统开发和调试方面具有丰富的经验。
前言
——“有人的地方就有江湖,有软件的地方就有BUG。”
比尔·盖茨在1998年演示Windows 98操作系统的时候,突然出现蓝屏,但是他一点也不惊慌,因为他知道这就是真实的软件世界。
盖茨表现淡定还有另外一个原因,那就是在Windows蓝屏以后,会生成崩溃转储文件,软件工程师可以根据该文件来分析蓝屏的原因,能够快速地定位并解决BUG。
为什么写作本书
在C/C++领域工作的这10多年里,令我印象深刻的并不是使用C/C++去实现一个复杂的功能有多么困难,而是解决一个看似微不足道的BUG并不像我们想象的那么容易。很多读者可能也有这个体会,长时间地熬夜加班,并不是为了完成一项重大的任务或者一个新功能,而通常是为了解决一个不容易发现的BUG—这个BUG可能是别人留下的,也可能是自己留下的。C/C++开发人员通常有很强的代码编写能力,可以完成复杂的任务。常言道“代码写得越多,BUG就会越多”,这是事实。如何才能又快又好地开发出高质量的软件呢?这也是软件行业一直在思考的问题,所以很多组织和培训机构都从软件开发的外围入手,比如使用一定的开发模式和方法,增加或者改变软件开发的流程等。的确,这些措施能够在一定程度上提升软件开发的效率。
但是BUG从没有减少,因此作者希望能够将这些年积累下来的解决C/C++程序BUG的经验整理成书,希望能够帮助读者在开发工作的初期避免一些本不应该出现的BUG。即使是在开发工作的后期出现BUG,相信读者也能够有效地使用本书中的调试手段和技巧,迅速地定位并解决BUG。
本书特色
本书理论结合实际,融入了作者10多年的Windows和Linux系统开发经验,尤其是C/C++开发方面的调试经验与心得。除第1章外,其他每章都编写了示例代码,无论是在Windows还是Linux系统中开发,本书都竭尽所能把问题解释清楚,确保每一位读者都能从本书中获得宝贵的调试技巧与方法。
通过本书中的示例代码,读者可以熟练掌握书中介绍的调试工具、调试方法、调试技巧。本书虽然无法做到面面俱到,但是只要读者掌握了相关理论以及相应的实战技巧,就一定能够提升调试技术,在解决BUG时产生事半功倍的效果。
主要内容
全书共分为11章,几乎涉及C/C++程序调试的方方面面,其中包括Windows系统和Linux系统C/C++程序的调试方法与技巧,主要内容如下。
・第1章,“C/C++调试基本知识”,主要介绍了什么是BUG,以及与调试有关的一些概念,并介绍了调试的重要性。
・第2章,“Visual C++调试基本功能”,详细介绍了Visual C++的基本调试功能,包括断点管理、调试执行、监视变量、内存查看、堆栈、线程管理等,还介绍了一些断点的高级用法,比如条件断点、数据断点等。