Effective Debugging:软件和系统调试的66个有效方法
上QQ阅读APP看书,第一时间看更新

对书中术语的说明

本书所说的fault(错误)一词,遵循ISO-24765—2010(Systems and software engi-neering——Vocabulary)标准,它的意思是:“计算机程序里面某个不正确的步骤、流程或数据定义。”这也称为defect(缺陷)。在日常工作中,我们把这叫做bug。与之类似,本书所用的failure(故障)一词,也遵循ISO-24765—2010标准,它指的是:“因系统或系统组件未能在规定限制之下执行所需功能而引发的事件。”故障可以表现为程序崩溃、程序冻结或是程序的结果有误。故障一词强调的是程序运行的后果,而错误一词强调的则是我们所遇到或使用的某个程序本身有问题。不过有的时候,大家也会用错误及缺陷这两个词来指代故障,ISO标准也承认了这一点。笔者在本书中会按照上述定义来区分这几个词,然而在语境比较明确的情况下,我通常也会用问题(problem)一词来指代错误(如“代码有问题”)或故障(如“可以重现的问题”),这样写能够使本书读起来更加流畅,而不至于变成一份法律文件。

Unix操作系统的shell、程序库以及工具,目前都可以运行在各种各样的平台上。笔者采用Unix一词来指代遵从Unix原则及API的任何一种系统,包括Apple的Mac OS X、各种GNU/Linux发行版(如Arch Linux、CentOS、Debian、Fedora、openSUSE、Red Hat Enterprise Linux、Slackware及Ubuntu)、直接从Unix继承而来的系统(如AIX、HP-UX及Solaris)、各种BSD衍生系统(如FreeBSD、OpenBSD及NetBSD),以及运行在Windows系统上的Cygwin。

本书中所列出的C++、Java或Python代码,针对的也是较新的编程语言版本,不过笔者会避开那些奇怪的或是刚刚推出的特性。

书里面会出现“你的代码”和“你的软件”这两种说法,它们指的是你正在调试的代码以及正在开发的软件。这两种说法听起来比较简洁,而且也暗含了一种对代码所有权的宣示,这对于软件开发人员来说是十分重要的。

笔者所说的例程(routine)一词,是指可供调用的代码单元,如成员函数、方法、函数、过程以及子例程等。

Visual Studio及Windows指的是Microsoft公司的相关产品。

修订控制系统(revision control system)及版本控制系统(version control system),是指像Git这样能够对软件配置进行管理的工具。