博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于DEBUG的一点体会
阅读量:6987 次
发布时间:2019-06-27

本文共 1299 字,大约阅读时间需要 4 分钟。

目录

1. 看待问题

遇到更高级的bug,解决更重要的问题,是开发同学的迭代生活。

遇到问题、分析问题、定位问题、并寻求优雅的方式方法解决问题,为我们不断成长提供了素材。
493729-20180725173641708-1345188920.jpg

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

转载于:https://www.cnblogs.com/eaglediao/p/9333619.html

你可能感兴趣的文章
若一整系数$n$次多项式在有理数域可约,则总可以分解成次数小于$n$的两整系数多项式之积....
查看>>
docker tomcat 环境构建
查看>>
EF Core CodeFirst实践 ( 使用MS SqlServer)
查看>>
MGR 架构 ~ DBA相关运维管理
查看>>
vue中父子组件以及兄弟组件的传值情况?
查看>>
Oracle 使用RMAN COPY 移动 整个数据库 位置 示例
查看>>
Sencha toucha2中设置文本框默认提示文字的PlaceHolder属性的颜色
查看>>
PHP模拟POST提交数据三种方式
查看>>
共享纸巾更换主板代码分析 共享纸巾主板更换后的对接代码
查看>>
页面添加友盟(CNZZ)统计和事件追踪
查看>>
新maven项目创建JSP出现小红叉报错 javax.servlet.http.HttpServlet not found
查看>>
跨域问题
查看>>
两年之中
查看>>
JQuery 获取验证码倒计时
查看>>
scala(13)-----集合(Collection)-------元组
查看>>
线段树模板
查看>>
tomcat下发布项目,遇到的问题总结
查看>>
Node开发入门
查看>>
持续集成①安装部署jenkins从git获取代码
查看>>
zabbix添加对haproxy的监控
查看>>