首页->FAQ->显示文章

Google
 

写程序应该用调试器调试,还是用log调试呢?

调试问题上,本质上也没有什么银弹,把各种工具都掌握好,在恰当的时候用吧。

简单的说优劣:
log的缺点:

  1. 对多线程来说有副作用,可能会掩盖某些竞争条件(减慢了速度造成程序不出错,但是遇到快速的机器和io还是要出问题)。
  2. 很多程序员不知道该输出什么不输出什么,经常看到无数不知所云的log,反而增加调试的复杂度
  3. 加错位置(忘了关闭,等等)可能大幅降低效率(我们分词器内部实现里面有个调试log,程序员发布到真实环境去了,查询效率下降到惊人的程度)。
  4. 只能事后去看,不能即时查看。

log的优点:

  1. 在debug/开发/实际环境中都可以用。
  2. 不用停止程序。
  3. 可以做统计分析。

调试器的缺点:

  1. 不能安装在生产服务器和客户的机器上。
  2. 多线程下对时序有影响。
  3. 必须把程序停下来。

调试器的优点:

  1. 可以把程序停在某个点上,所有的内部状态都可以查询。

所属分类: [软件工程]
tag: log, 调试, 调试器,

tinyfool发布于2009年12月07日 21:38
最后更新于2009年12月07日 22:00