关于DEBUG的一点体会

[TOC]java

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堆栈信息spa

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


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

  • 重视java基础/OO能力/UT能力等基础,注重编码质量
  • 积累项目公共组件和基本框架流程的理论和实践经验
  • 具体问题具体分析
相关文章
相关标签/搜索