zoukankan      html  css  js  c++  java
  • 程序员请不要忽视调试技术

     程序员请不要忽视调试技术

    想写这篇文章已经很久了,但是一直不知道如何开始,因为调试技术这个东西本身不像编程语言,C++/C#这种简单的东西,大家想做些什么,查查类库,查查msdn,写出一些功能,皆大欢喜。

    调试技术本身就很枯燥,如果没有一定定力的兄弟,看看可能就觉得犯困,没劲,没成就感。但是想想程序员,每天写代码一小时,可能调试的时间至少也需要一小时,当然,写到这可能你不同意,觉得你自己不是这样的,你不需要调试,对,我说的只是一般情况,不排除有高手,口水战也没社么意思,直接忽略这种情况。
    不知道为什么,国内研究调试技术的人不是很多,可能大家都觉得这些基础的东西没意思,大家都在研究云计算,研究设计架构模式吧,我等无法企及的高度。呵呵,不扯了,开始重点的:
     
    据我所知,在软件开发过程中有些及其重要的环节都需要调试技术,而且国外对这方面研究的也很多,我也不想说谁浮躁,但是这些基础的技术确实值得我们研究。
     
    举个例子:
    你公司开发的产品,在客户那边crash了,客户的环境不允许你访问,客户不知道问题是怎么发生的,他说他喝了杯茶,回来就发现问题的。
    你想,你妹的,你还拉屎呢?
     
    其实这个时候就需要调试技术了,怨天尤人是没有用处的,最好的方式就是分析日志,查看.dump文件,但是你能看得懂么?学学调试技术吧,学学反汇编吧,其实这些东西都是作为程序员的基本功,别告诉我你会云计算,在这个时候,对客户一点用都没有。
     
    下面说说主流的调试技术:
     
    由于调试技术比较接近系统底层,所有他和系统的架构,比如X86, ARM,有紧密的关系,常见的架构是X86,而且和OS相关,常见的OS是linux和windows。
     
    windows 平台的调试工具比较多,高手用windbg比较多。
    linux不用说,用GDB的比较多。
     

    写几个demo考考大家的调试水平:

    When you are using recursive definitions of this type, each alias is translated as soon as it is used.

    For example, the following example displays 3, not 7.

    0:000> r $.u2=2
    0:000> r $.u1=1+$u2
    0:000> r $.u2=6
    0:000> ? $u1
    Evaluate expression: 3 = 00000003


    Similarly, the following example displays 3, not 7.

    0:000> as fred 2
    0:000> r $.u1= 1 + fred
    0:000> as fred 6
    0:000> ? $u1
    Evaluate expression: 3 = 00000003


    The following example is also permitted and displays 9.

    0:000> r $.u0=2
    0:000> r $.u0=7+$u0
    0:000> ? $u0
    Evaluate expression: 9 = 00000009


     

     
    总结
    我写这篇文章的意图是想说明,作为程序员,除了必要的算法,语言,系统,必要的调试技术也是基本功,而这项基本功在国内没有引起足够的重视,希望你可以看到我这篇文章。
  • 相关阅读:
    [gj]三国攻势图
    [svc]msmtp+mutt发附件,发邮件给多个人
    [sh]清理memcached缓存
    [svc]jdk1.7.0_13(系列)下载url
    [svc]linux查看主板型号及内存硬件信息
    [svc][op]如何查看当前Ubuntu系统的版本
    [svc][bg]phabricator-zh_CN汉化包
    [na]台式机装原版Win2008R2
    [svc]salt源码安装软件和yum安装软件
    JSTL的相关使用
  • 原文地址:https://www.cnblogs.com/pugang/p/2759514.html
Copyright © 2011-2022 走看看