关于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能力等基础,注重编码质量
- 积累项目公共组件和基本框架流程的理论和实践经验
- 具体问题具体分析
关于DEBUG的一点体会的更多相关文章
- 音频软件消除人声的一点体会(cood edit ,goldwav)
音频软件消除人声的一点体会(cood edit ,goldwav) 使用方法: 1.打开文件 2.命令处理(红色位置可以调整到你认为合适的数据或效果) 3.效果:两个软件均处理后的效果均可以接受.不 ...
- 【原创】C#玩高频数字彩快3的一点体会
购彩风险非常高,本人纯属很久以前对数字高频彩的一点研究.目前已经远离数字彩,重点研究足球篮球比赛资料库和赛果预测. 这是一篇在草稿箱保存了1年多的文章,一直没发现,顺便修改修改分享给大家.以后会有更多 ...
- Delphi研究,对全局变量函数与OOP编程关系的一点体会 good
感叹:设计VCL的人真是神人啊,感觉比Pascal编译器的设计人还要牛很多,把整个Windows架构理了一遍,封装的如此之好,复用的如此之好(以至于Delphi的控件满天飞,使用还特别容易),简直惊为 ...
- Django ORM模型的一点体会
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...
- 大型开放式网络课程MOOC的一点体会
2012年,美国的顶尖大学陆续设立网络学习平台,在网上提供免费课程,Coursera.Udacity.edX三大课程提供商的兴起.给很多其它学生提供了系统学习的可能.这就是大型开放式网 ...
- 初学c的一点体会
自学C语言的一些体会1 从最初什么都不知道变成知道一点,一转眼就过去了三个多月,最开始只是刚进大学,感觉太闲了不太好就决定学点什么,于是就到图书馆逛了一圈找找看有什么有趣的书可以看看,刚好就在书架上看 ...
- c++ 模板元编程的一点体会
趁着国庆长假快速翻了一遍传说中的.大名鼎鼎的 modern c++ design,钛合金狗眼顿时不保,已深深被其中各种模板奇技淫巧伤了身...论语言方面的深度,我看过的 c++ 书里大概只有 insi ...
- debug的一点总结
程序员常常需要和bug打交道,一般来说调试bug的时间要多于编写程序的时间. bug可以简单的分为两大类: 语法上的bug 逻辑上的bug 语法上的bug就是指编译器能够识别的,例如常见的缺少分号和括 ...
- 学习java的一点体会
在这几天的做实验.读书.写笔记的过程中我发现一个问题,就是我的知识面太窄,就比如说,学的知识都是一块一块的,没有能力去把它串起来,虽然学的很快,也写笔记总结,但马上就忘了,我想java是一个体系,需要 ...
随机推荐
- elementUI拿到当前表格行的数据的另一种写法
背景: 这里是通过点击“修改”按钮后才拿到当前行的数据,不是点击当前行任意位置拿到数据,所以不能用 @row-click 方法 改用点击的时候直接拿到这个表里面的这一条数据 1.绑定事件 <te ...
- 组合数学(math)
组合数学(math) 题目描述 为了提高智商,zjy开始学习组合数学.某一天她解决了这样一个问题:“给一个网格图,其中某些格子有财宝.每次从左上角出发,只能往右或下走.问至少要走几次才能把财宝全部捡完 ...
- 关于C语言命令行参数问题
1 int main(int argc,char** argv) 参数: argc:命令行参数的个数 argv:保存命令行参数:argv[0]保存本程序自己的名称 现在自己只知道这些以后再有学习继续补 ...
- Devstack 多节点自动化部署
本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou JmilkFan:minxihou的技术博文方向是 算法&Open ...
- 2.4 webpack + gulp 构建完整前端工作流
在前面的两个小节中已经完整的讲了 webpack 和 gulp 相关的内容,本小节中将会结合二者构建一个完整的前端工作流,内容目录为: 前端工程结构和目标 前端工程目录结构 gulp clean gu ...
- 常用的一些js事件及案例
比如金额需要显示的时候转换成有千分位,小数点后保留2位等.去编辑的时候,又要格式化,把逗号都去掉.网上找了段代码,但是再次编辑会有问题,修改了一下,代码如下: function outputMoney ...
- 常用命令--sed
sed -n '/2019-07-24/,/2019-07-25/p' my.log sed -n '/2019-07-25 16:51:23,699/,/2019-07-25 16:51:38,79 ...
- springboot1.5.x升级到2.1.x切换分支导致的maven依赖混乱
背景:项目springboot版本由1.5.X升级到2.1.X,两个版本的分支需要共存,来回切换的时候,maven依赖各种报红 查看dependency发现1.5.X的jar和2.1.X的jar都存在 ...
- java8如何对List<Bean>进行去重和覆盖
背景:有一批数据源从kafka给过来,接收到后需要处理,然后入库,我们用一个线程消费下来,一次消费30000条, 按照对象的概念,可以用List<Person>来表示,因为某种原因,需要根 ...
- python代码技巧总结(更新至17条)
怎么提高代码水平?答:看牛逼的代码! 牛逼的代码怎么写的?简单,明确,优雅! 怎么简单,明确,优雅?学技巧! 下面搜罗了一些有才格子褂青年的总结,哈哈 1.检查 Python 中的对象 调用 dir( ...