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


     

     
    总结
    我写这篇文章的意图是想说明,作为程序员,除了必要的算法,语言,系统,必要的调试技术也是基本功,而这项基本功在国内没有引起足够的重视,希望你可以看到我这篇文章。
     
  • 相关阅读:
    javaWeb总结——session
    javaWeb中servlet开发——过滤器
    参数化测试
    JUnit 4中元数据的用法
    appium常用方法
    appium查看控件的方法
    appium+java+testng+maven环境搭建
    java-appium自动化测试之DesiredCapabilities
    GitHub 标星 15.3k,Java 编程思想最新中文版(On Java 8)
    【成功上岸】2年半开发经验进入梦寐以求的京东上班,附上我的上岸经验希望帮助到大家!
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2760824.html
Copyright © 2011-2022 走看看