标准的调试方法

Fun*_*ung 6 debugging standards

调试问题的标准方法是什么?这可能看起来像一个相当广泛的问题,有些人回答"这取决于问题",但我认为我们很多人本能调试,并没有真正尝试过我们的过程.这就是为什么我们说'它取决于'.

我最近有点被迫说出我的过程,因为一些开发人员和我正在处理同样的问题而我们正在以完全不同的方式调试它.我希望他们理解我想要做的事情,反之亦然.

经过一番反思后,我意识到我的调试方式实际上非常单调.我将首先尝试能够可靠地复制问题(特别是在我的本地机器上).然后通过一系列的消除(这是我认为它依赖于问题的地方)尝试识别问题.

其他人试图以完全不同的方式做到这一点.

那么,只是想知道那些为你们工作的是什么?如果你不得不用文字形式化它,你会说你的过程是用于调试的?

顺便说一下,我们还没有发现我们的问题=)

Gre*_*g D 7

我的方法因我对手头系统的熟悉程度而异.通常我做的事情如下:

  1. 如果可能的话,复制失败.
  2. 检查故障状态以确定故障的直接原因.
  3. 如果我熟悉这个系统,我可能会对根本原因有一个很好的猜测.如果没有,我开始通过软件机械追踪数据,同时挑战软件的基本假设.
  4. 如果问题似乎具有一致的触发器,我可以使用调试器手动前进代码,同时挑战代码所做的隐式假设.

当然,追根溯源的原因在于事情会变得多毛.这是一个转储(或更好,一个活的,破碎的过程)可以真正无价的地方.

我认为调试过程中的关键点是挑战前概念和假设. 我发现该组件中我或同事会发誓的错误工作次数很多.

我的更直观的朋友和同事告诉我,当他们看我调试或让我帮他们解决问题时,我很迂腐.:)