调试技巧小结

2014-07-30  本文已影响92人  不是流汗羊
58ee3d6d55fbb2fb185bb7ff4e4a20a44723dcef.jpg

调试从哪里来?

调试被称之为“黑客之瞳”,程序的对错通常都不是证明出来的,而是需要我们去观测验证的。调试是程序员的工具,帮助我们发现、解决程序问题。在什么情况下,我们会需要调试呢?这里可以把调试分为两个点:

  1. 发现问题
  2. 解决问题

怎么有效率地进行调试

1.出问题了,消息是否可靠?

通常,我们是在知道程序有问题以后才去调试。从这里开始,我们得到了关于程序出错的信息。这个信息可能是测试人员告诉你的,也可能是用户告诉你的,因此第一步是确认这个信息。也许会急着自己重现这个问题,其实我们不用这么急躁,我们需要先判定这个信息来源是否可靠。如果认为是真,那么就跟着这个假设往下走,不浪费时间亲自重现错误。

2.定位问题,是否需要验证问题?

如果代码你非常熟悉,而且有把握预测写下的代码会有什么行为,那么直接修改问题就完了。对于熟悉的代码,应该最起码能够预期代码行为,并且经过profile等等测试,才能成为合格。

3.如果定位困难,但是很熟悉代码

可以动手调试,数据断点、查看内存、代码断点、日志、转储文件、查看汇编代码、抓网络包这些方法都是你的好朋友。

4.如果代码不熟悉,那么用二分法

最简单粗暴,直接注释某些功能,直到筛选出问题代码。看上去很慢,其实很快就能发现问题。

5.如果连业务都不熟悉

或许应该让别人去解决,如果一定要解决,那么请从设计开始了解,不要马上就钻入代码里面,否则很危险,而且浪费时间。也许重写也是一个好方法。


问题之外再问问自己

  1. 问题是什么?用户的期望与实际的差异有哪些?
  2. 为什么会有这次问题?是数据结构设计得不好吗?是数据与显示没有分离吗?
  3. 这是谁的问题?谁认为是问题?
上一篇 下一篇

猜你喜欢

热点阅读