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. react react使用css

    在react 中使用css有以下几种方法 第一种全局使用 app.js import React from 'react'; import Router from "./router&quo ...

  2. contest20191023

    slz的题 KCN 雨中的晴天 宫水三叶生活的城市是一个一维平面上的城市.三叶喜欢用一个长度为n的线段来表示这座城市.线段上(包含端点)平均分布着 $n+1$ 个点,其中第 $i$ 个点到第 $i+1 ...

  3. SDNU 1217 CD收藏——并查集

    Description     lmh平常爱听歌,所以买了很多的CD来收藏,但是因为平常整理不当,所以忘记了这些CD的歌手是谁.现在他想知道他到底收藏了多少位歌手的专辑,于是他想了一个办法,同时拿出两 ...

  4. fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit

    最近想用一下Xtreme ToolkitPro 界面库,安装后用VC6根据向导 产生一个工程,编译时出现如下的错误: fatal error C1076: compiler limit : inter ...

  5. 关于C语言命令行参数问题

    1 int main(int argc,char** argv) 参数: argc:命令行参数的个数 argv:保存命令行参数:argv[0]保存本程序自己的名称 现在自己只知道这些以后再有学习继续补 ...

  6. Amazon Linux AMI 2015.09 (HVM)平台搭建lamp

    更新yum yum update 安装Apache: yum install -y httpd 安装完之后,重新启动 service httpd restart 将Apache设置为开机启动 chkc ...

  7. Dubbo入门到精通学习笔记(十七):FastDFS集群的安装、FastDFS集群的配置

    文章目录 FastDFS集群的安装 FastDFS 介绍(参考:http://www.oschina.net/p/fastdfs) FastDFS 上传文件交互过程: FastDFS 下载文件交互过程 ...

  8. 内存Zone中的pageset成员分析

    1: struct per_cpu_pageset __percpu *pageset; 首先,分析一个函数,__free_pages,这个函数是Buddy System提供的API接口函数,用于翻译 ...

  9. Servlet.init() for servlet [springmvc] threw exception

    项目还没开始做,就碰到那么多问题.. 报错一:/oa/news/%E6%A0%8F%E7%9B%AE%E7%AE%A1%E7%90%86.jsp 1.一开始是jsp的页面名称为中文,改了 2.接着仍然 ...

  10. DNF邀请码开发再开发方案需求

    一.原因分析:   1.现实原因:主播粉丝量级有限,一定规模粉丝注册消耗完后无法进 行之后合作 2.主播资源有限,能合作主播数量少   3.直播粉丝真实接近核心用户,但是不能将其有效转化为平台流水   ...