1. 调试
调试是执行一次成功的测试之后所要进行的工作。
调试包含了两个步骤:
-
确定程序中可疑错误的准确性质和位置。
-
修改错误。
2. 暴力法调试
暴力调试方法可至少被划分为三种类型:
-
利用内存信息输出来调试。
-
根据一般的”在程序中插入打印语句”建议来调试。
-
使用自动化的调试工具进行调试。
2.1. 内存信息输出
使用内存信息输出是最缺乏效率的暴力调试方法。原因如下:
-
难以在内存区域与源程序中的变量之间建立对应关系。
-
即使对于复杂程度较低的程序,内存信息输出也会产生数量非常庞大的数据,其中的大多数都是与调试无关的。
-
内存信息输出显示的是程序的静态快照,仅能显示出在某一个时刻程序的状态,为了发现错误,还需要研究程序的动态状态(随时间的状态变化)。
-
内存信息输出很少可以精确地在错误发生的地方产生,因此无法显示在错误发生时程序的状态。错误发生到输出内存信息这段时间之内程序执行的活动,可能会掩盖掉发现错误所需的线索。
-
通过分析输出的内存信息来发现问题的方法并不太多(因此很多程序员都是密切注视,急切地渴望着错误能神奇地从内存信息输出中自行暴露出来)。
2.2. 程序中插入打印语句
在失效的程序中插入输出变量值的语句,这种做法也不具有很强的优势。它有如下缺点:
-
它不是鼓励我们去思考程序中的问题,而主要是一种碰运气的方法。
-
它所产生的需要分析的数据量非常庞大。
-
它要求我们修改程序,这些修改可能会掩盖

最低0.47元/天 解锁文章
725

被折叠的 条评论
为什么被折叠?



