为什么飞机上要安装黑匣子呢? 也谈程序中log和debugger的应用场景

         最近飞机出了不好的事,我表示深深地哀悼。实时监控系统出了问题, 大家都在急忙找黑匣子这个black box, 因为black box中有飞机飞行的一些记录。

        下面,我从软件开发的角度来探讨一下log(black box)和debugger的应用场景。


         最开始学C语言的时候,经常用printf函数来打印变量的值。后来学会了单步调试,便了此不疲, 彻底爱上了debugger单步调试。再后来, 做与嵌入式相关的开发,又慢慢钟情于log. 下面简要聊聊log和debugger的应用场景,随便聊,随便扯,以便抛砖引玉。


          1.  debugger单步调试是微观的(VC++6.0的单步调试很直观啊),可以查到几乎每一个变量的状态;

               log则相对宏观,有一气呵成的感觉,但很少有log去打印每一个变量的状态, 不够细致入微。


          2. 如果怀疑bug出现在某个地方, 可以用debugger单步调试;

              很多时候,此处很可能没有log, 为了定位bug, 又需要重新添加日志代码,重新编译等, 说不定要需要烧录呢,比较麻烦。


          3. 有时候程序太大, 我只想看程序跑起来后前面的一些变量的值, 这个时候用debugger的单步调试就很好了。

              如果用log, 可能需要运行全部程序。


          4. 如果对bug出现的地方没有什么概念,你怎么用debugger单步调试呢?

              此时,用log的优点就很突出了。


          5. 在大型系统中,很多问题都是概率性出现的,你怎么能用debugger来调试呢?

              此时, 用log的优点就很突出了。


          6. 你把软件发布给用户了,远方的用户用着用着出了问题, 你还怎么用debugger单步调试?

              此时, 用log的优点就很突出了。


          7. 程序中如果有定时器或多线程, 你用debugger调试,很可能影响程序的结果。

             此时,用log, 程序跑起来更流畅,更真实。


           8. 如果一个循环有1000次,你需要看哪一次出了问题,用debugger? 累死你!

              此时, 用log吧, 我有过亲身经历。


           9. 有时候要进行一些自动测试,你怎么用debugger?

               此时, 用log吧。


           10.总体来讲, log的应用比debug要广。 



         最后要说的是, 没有什么好坏,只有合适不合适。估计,在学生时代,用单步调试用得多,在公司,用日志用得多。

         你看,地面需要对飞机进行实时监控,但有时候,实时监控室不靠谱的,比如驾驶人员把飞机飞到雷达监测不到的地方呢? 这个时候, 单步跟踪失效。所以,需要黑匣子来记录log.


           

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值