调试程序Bug的过程

我们可以使用五个步骤来进行调试:1、找到根本原因。2、了解问题所在。3、确定修复方案。4、修复问题。5、重新测试。

假设您编写了一个程序,但它无法正常工作——代码编译得很好,但是当您运行它时,您会得到不正确的结果。 你一定在某个地方有语义错误。 你怎么能找到它? 如果您一直遵循最佳实践,编写一些代码然后进行测试,那么您可能很清楚错误在哪里,也可能你根本不知道。

所有错误都源于一个简单的前提:您认为正确的事情实际上是错误的。 实际上找出错误所在可能具有挑战性。 在本课中,我们将概述调试程序的一般过程。

因为我们还没有涵盖那么多 C++ 主题,所以本章中的示例程序将非常基础。 这可能会让我们在这里展示的一些技术显得有些多余。 然而,请记住,这些技术被设计用于更大、更复杂的程序,并且在这样的设置中会更有用(这是您最需要它们的地方)。

调试bug的通用方法

一旦发现问题,调试问题通常包括五个步骤:

  • 找到问题的根本原因(通常是不起作用的代码行)
  • 确保您了解问题发生的原因
  • 确定如何解决问题
  • 修复导致问题的问题
  • 重新测试以确保问题已得到解决并且没有出现新问题

现在让我们将这个过程应用到前一课中的简单程序中:

#include <iostream>

int add(int x, int y) // 此函数应该执行加法操作
{
    return x - y; // 但由于使用了错误的运算符,它并不执行加法
}

int main()
{
    std::cout << "5 + 3 = " << add(5, 3) << '\n'; // 应该产生 8,但产生了 2

    return 0;
}

这段代码在某种程度上是很好的,因为错误非常明显,错误的答案通过第10行输出到屏幕上。这给了我们一个起点来进行调查。

找到问题的根本原因:在第10行,我们可以看到我们正在为参数传递文字(5和3),所以在那里没有出错的余地。由于传递给函数 add 的输入是正确的,但输出不正确,因此很明显函数 add 必须生成了错误的值。函数 add 中唯一的语句是返回语句,这必须是问题的源头。我们已经找到了问题所在的行。既然我们知道了应该集中注意力的地方,注意到我们执行了减法而不是加法是您通过检查可能会发现的。

理解问题:在这种情况下,为什么生成了错误的值是很明显的——我们使用了错误的运算符。

确定修复方法:我们将简单地将运算符 - 更改为运算符 +

修复问题:这实际上是将运算符 - 更改为运算符 + 并确保程序可以重新编译。

重新测试:在实施更改后,重新运行程序将表明我们的程序现在生成了正确的值8。对于这个简单的程序,这就是需要的所有测试。

这个示例很琐碎,但它说明了您在诊断任何程序时将经历的基本过程。

原创文章,作者:jkhxw,如若转载,请注明出处:https://www.jkhxw.com/cpp-debugging-process/

(0)
上一篇 3天前
下一篇 2天前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注