调试是一种非常有用的工具,可用于在运行时检查代码中对象和变量的状态。
如前面的答案中所述,调试非常有帮助,但是在某些情况下调试是有限的。
根据我的经验,我发现使用调试器非常有用,因为它有助于揭示我对代码状态所做的错误假设。有些人并不擅长阅读代码以查找错误,因此调试可以帮助揭示您或其他开发人员对代码状态所做的错误假设。
也许您希望参数在传递给方法时永远不会为空,所以您永远不会检查这种情况并像在该参数永远不会为空的情况下那样继续进行。现实情况是,参数将结束在即使你设置为先决条件,参数不应该是空的方法的一些点被空。它总是会发生。
与上述示例中调试器的有用性相反,当涉及多线程(即并发,异步处理)时,我发现使用它很困难,而且没有什么用处。它可以提供帮助,但是当在A点的一个线程和B点的一个完全独立的线程中碰到调试器的断点时,容易在多线程迷雾中迷失方向。开发人员被迫按下新的断点“思维过程”,然后在新断点处将自己定向到代码。在断点B的相关性降低之后,开发人员然后切换回第一个断点,并且必须回想起触发断点B之前他/她正在寻找的内容。我知道这可能是一个令人困惑的解释,
而且,并发代码的不可预测性还会进一步分散开发人员调试并发代码的注意力。
最后,以我的诚实意见:
- 使用并发时进行调试=失去“调试思想模式”焦点的趋势增加
和
- 随时可以=提高调试效率b / c您的注意力不会因意外的断点而中断(由于竞赛条件而无法预期)。