zoukankan      html  css  js  c++  java
  • 关于DEBUG的一点体会

    1. 看待问题

    遇到更高级的bug,解决更重要的问题,是开发同学的迭代生活。
    遇到问题、分析问题、定位问题、并寻求优雅的方式方法解决问题,为我们不断成长提供了素材。

    2. 为什么要debug

    bug在所难免。问题在于怎么减少不必要的bug,以及快速解决问题!

    • 提升个人技术素养,最大限度减少bug,降低版本交付风险。面向对象能力、UT能力等基本功最应该重视和掌握。
    • 另一方面,bug在于难免。要积累一些解决问题的套路和方法。

    3. 我理解的问题定位能力

    debug能力其实就是定位问题的能力。那如何提升自己定位问题的能力?

    • 首先,对业务逻辑以及数据交互流程应该有清晰的了解。
    • 其次,对所涉及的技术知识、基本原理有一定的认识,积累一些所谓的“坑”。
    • 再次,针对具体的业务场景及其技术应用,积累一些工具方法,提升效率。

    4. debug能力模型的4个层级

    L1(入门级) 只会查看堆栈
    "① 只会通过日志打印、查看堆栈信息定位问题"
    补充:熟悉日志记录框架,代码中日志记录符合可审计的基本要求。

    L2(初级) 基础调试
    "① 可以通过IDE的可视化方法进行单步调试、断点设置等手段定位问题
    ② 了解JVM的运行机制,了解其中线程调度、垃圾回收、JMM、GC的优化策略等
    ③ 了解Eclipse或JDB调试原理
    ④ 了解jstack,jmap,jstat工具原理,并能定位简单的性能问题(GC、同步、I/O、代码执行性能等)"

    L3(中级) 中级调试
    "① 精通JVM的运行机制,了解其中线程调度、垃圾回收、JMM、GC的优化策略等
    ② 精通Eclipse或JDB调试原理
    ③ 能熟练的使用Eclipse或JDB定位问题,进行远程调试
    ④ 熟练掌握jstack,jmap,jstat等工具,能定位中等难度的性能问题
    ⑤ 了解其他的性能调优分析工具及方法:OQL、Visual VM、Java Flight Recorder等
    ⑥ 辅导低级别员工进行调试,使用调试工具"

    L4(高级) 高级调试
    "① 可以通过JDB附加进程,调试定位问题
    ② 精通JAVA调试原理,熟练掌握jstack,jmap,jstat等工具,能定位高难度的性能问题
    ③ 熟练掌握其他的性能调优分析工具及方法:OQL、Visual VM、Java Flight Recorder等
    ④ 能承担部门级调试技术赋能"

    5. 小结与扩展

    从问题定位的场景来看,或许也可以分为迭代开发中的debug和线上问题的攻关定位。
    迭代开发中的debug调试方法:
    1. 本地断点调试
    2. 服务器上远程调试
    3. 日志查看:业务日志、数据库日志、操作系统日志
    4. JVM堆栈信息

    线上问题定位方法:
    1. 日志采集与查看
    2. 堆dump信息,GC日志、堆栈信息


    本文对debug能力的理解做简要记录。写在文末:

    • 重视java基础/OO能力/UT能力等基础,注重编码质量
    • 积累项目公共组件和基本框架流程的理论和实践经验
    • 具体问题具体分析
  • 相关阅读:
    Chapter 23: Termination Handlers(2)Understanding Termination Handlers by Example(3)
    Android 3.2 开发环境配置
    基于servlet的文件下载
    jQuery.extend 函数详解
    【推荐】关于JS中的constructor与prototype【转】
    经典代码(01)
    JQuery框架原理模拟实现
    JAVA中的接口和抽象类(转)
    java设计模式之观察者模式
    jquery $.fn $.fx原理
  • 原文地址:https://www.cnblogs.com/eaglediao/p/9333619.html
Copyright © 2011-2022 走看看