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能力等基础,注重编码质量
  • 积累项目公共组件和基本框架流程的理论和实践经验
  • 具体问题具体分析

关于DEBUG的一点体会的更多相关文章

  1. 音频软件消除人声的一点体会(cood edit ,goldwav)

    音频软件消除人声的一点体会(cood  edit ,goldwav) 使用方法: 1.打开文件 2.命令处理(红色位置可以调整到你认为合适的数据或效果) 3.效果:两个软件均处理后的效果均可以接受.不 ...

  2. 【原创】C#玩高频数字彩快3的一点体会

    购彩风险非常高,本人纯属很久以前对数字高频彩的一点研究.目前已经远离数字彩,重点研究足球篮球比赛资料库和赛果预测. 这是一篇在草稿箱保存了1年多的文章,一直没发现,顺便修改修改分享给大家.以后会有更多 ...

  3. Delphi研究,对全局变量函数与OOP编程关系的一点体会 good

    感叹:设计VCL的人真是神人啊,感觉比Pascal编译器的设计人还要牛很多,把整个Windows架构理了一遍,封装的如此之好,复用的如此之好(以至于Delphi的控件满天飞,使用还特别容易),简直惊为 ...

  4. Django ORM模型的一点体会

    作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...

  5. 大型开放式网络课程MOOC的一点体会

            2012年,美国的顶尖大学陆续设立网络学习平台,在网上提供免费课程,Coursera.Udacity.edX三大课程提供商的兴起.给很多其它学生提供了系统学习的可能.这就是大型开放式网 ...

  6. 初学c的一点体会

    自学C语言的一些体会1 从最初什么都不知道变成知道一点,一转眼就过去了三个多月,最开始只是刚进大学,感觉太闲了不太好就决定学点什么,于是就到图书馆逛了一圈找找看有什么有趣的书可以看看,刚好就在书架上看 ...

  7. c++ 模板元编程的一点体会

    趁着国庆长假快速翻了一遍传说中的.大名鼎鼎的 modern c++ design,钛合金狗眼顿时不保,已深深被其中各种模板奇技淫巧伤了身...论语言方面的深度,我看过的 c++ 书里大概只有 insi ...

  8. debug的一点总结

    程序员常常需要和bug打交道,一般来说调试bug的时间要多于编写程序的时间. bug可以简单的分为两大类: 语法上的bug 逻辑上的bug 语法上的bug就是指编译器能够识别的,例如常见的缺少分号和括 ...

  9. 学习java的一点体会

    在这几天的做实验.读书.写笔记的过程中我发现一个问题,就是我的知识面太窄,就比如说,学的知识都是一块一块的,没有能力去把它串起来,虽然学的很快,也写笔记总结,但马上就忘了,我想java是一个体系,需要 ...

随机推荐

  1. js 获取数组中的最大值和最小值

    var arr = [3,12,23,18,25,33,22,30,1] 方案一: 思想 首先对数组进行排序(小 >大),第一项为最小值,最后一项为最大值 var min; var max; a ...

  2. CF 1097D - Hello 2019 D题: Makoto and a Blackboard

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:传送门  Portal  原题目描述在最下面.  给一个数n ...

  3. RF中滚动条的操作方法小结

    滚动条分为俩种,一:主页面中的滚动条.二:页面中的子页面的滚动条. 每种滚动条有都分为上下滑动与左右滑动. 下面分别介绍: 一:主页面的滚动条上下滑动: execute javascript      ...

  4. 不带头结点的单链表------C语言实现

    File name:no_head_link.c Author:SimonKly Version:0.1 Date: 2017.5.20 Description:不带头节点的单链表 Funcion L ...

  5. Vim多窗口编辑

    在Linux中使用vim编辑多个窗口     方式:            1. vim -o file1 file2             打开的两个文件上下窗口分布 比如当前目录有makefil ...

  6. 【转载】Spring 源码分析之 bean 实例化原理

    本次主要想写spring bean的实例化相关的内容.创建spring bean 实例是spring bean 生命周期的第一阶段.bean 的生命周期主要有如下几个步骤: 创建bean的实例 给实例 ...

  7. 分享一套主流框架源码资料,征服阿里 P7 面试必备!

    2019年已经过完一半了, 我在这里为大家准备了一份资料,征服阿里 P7 面试必备! 希望这些资料可以帮助到大家,从一个码农进阶为一个优秀的程序员,也可以帮大家提升系统实战能力. 这些资料包括: 讲解 ...

  8. 净心诀---python3装饰器

    python3装饰器 装饰器作用 简单理解:可以为已有函数添加额外功能 例: 已有2个函数如下 def MyFunc1(): print("This is a print function1 ...

  9. 要素选择变化事件 IActiveViewEvents_SelectionChanged

    void IDockableWindowDef.OnCreate(object hook) { m_application = hook as IApplication; m_hookHelper = ...

  10. span里面插入文字

    .text-box span::before{   content:attr(data-text);}