程序调试过程
本节阅读量:假设编写了一个不能正常工作的程序。代码编译通过,但运行时,得不到正确的结果。如何找到有语义错误的地方?如果您一直在通过编写一点代码然后测试它,遵循最佳实践,那么您可能会很清楚错误在哪里,或者根本不知道。
所有的错误都源于一个简单的前提:你认为正确的东西,实际存在问题。实际上,找出错误在哪里是具有挑战性的。本节课,将概述调试程序的一般过程。
由于还未涵盖那么多C++主题,本节中的示例程序将非常基础。这会导致这里展示的一些技术超出目前的需求。然而,这些技术旨在与更大、更复杂的程序一起使用,并且在那些场景中更有用(这是最需要它的地方)。
调试的一般方法
一旦发现问题,调试问题通常包括五个步骤:
- 定位问题根因,通常是精确到有问题的代码行
- 理解为什么问题会出现
- 问题修复的方案
- 修复造成问题的代码
- 测试程序,确保问题修复完成,且没有引入新问题
使用上一课简单程序作示例:
|
|
这段代码有一点很好:错误非常明显,因为错误的答案通过第10行打印到屏幕上。为调试提供了一个起点。
根因:在第10行,传递参数(5和3)的文本,因此那里没有错误。由于函数add的输入正确,输出错误,很明显,函数add产生错误的值。函数add中唯一的语句是return语句,它就是罪魁祸首。找到问题所在。代码在做减法而不是加法,通过检查能快速发现。
理解问题:这种情况下,为什么生成了错误的值?很明显,因为使用了错误的操作符。
确定修复:将操作符-更改为操作符+。并确保程序重新编译。
重新测试:实现更改后,重新运行,产生正确的值8。对于简单的程序,这就是所需的所有测试。
这个例子很小,但说明了诊断任何程序时要经历的基本过程。
