关于DEBUG的一点体会
目錄
- 1. 看待問題
- 2. 為什么要debug
- 3. 我理解的問題定位能力
- 4. debug能力模型的4個層級
- 5. 小結(jié)與擴展
1. 看待問題
遇到更高級的bug,解決更重要的問題,是開發(fā)同學(xué)的迭代生活。
遇到問題、分析問題、定位問題、并尋求優(yōu)雅的方式方法解決問題,為我們不斷成長提供了素材。
2. 為什么要debug
bug在所難免。問題在于怎么減少不必要的bug,以及快速解決問題!
- 提升個人技術(shù)素養(yǎng),最大限度減少bug,降低版本交付風(fēng)險。面向?qū)ο竽芰ΑT能力等基本功最應(yīng)該重視和掌握。
- 另一方面,bug在于難免。要積累一些解決問題的套路和方法。
3. 我理解的問題定位能力
debug能力其實就是定位問題的能力。那如何提升自己定位問題的能力?
- 首先,對業(yè)務(wù)邏輯以及數(shù)據(jù)交互流程應(yīng)該有清晰的了解。
- 其次,對所涉及的技術(shù)知識、基本原理有一定的認識,積累一些所謂的“坑”。
- 再次,針對具體的業(yè)務(wù)場景及其技術(shù)應(yīng)用,積累一些工具方法,提升效率。
4. debug能力模型的4個層級
L1(入門級) 只會查看堆棧
"① 只會通過日志打印、查看堆棧信息定位問題"
補充:熟悉日志記錄框架,代碼中日志記錄符合可審計的基本要求。
L2(初級) 基礎(chǔ)調(diào)試
"① 可以通過IDE的可視化方法進行單步調(diào)試、斷點設(shè)置等手段定位問題
② 了解JVM的運行機制,了解其中線程調(diào)度、垃圾回收、JMM、GC的優(yōu)化策略等
③ 了解Eclipse或JDB調(diào)試原理
④ 了解jstack,jmap,jstat工具原理,并能定位簡單的性能問題(GC、同步、I/O、代碼執(zhí)行性能等)"
L3(中級) 中級調(diào)試
"① 精通JVM的運行機制,了解其中線程調(diào)度、垃圾回收、JMM、GC的優(yōu)化策略等
② 精通Eclipse或JDB調(diào)試原理
③ 能熟練的使用Eclipse或JDB定位問題,進行遠程調(diào)試
④ 熟練掌握jstack,jmap,jstat等工具,能定位中等難度的性能問題
⑤ 了解其他的性能調(diào)優(yōu)分析工具及方法:OQL、Visual VM、Java Flight Recorder等
⑥ 輔導(dǎo)低級別員工進行調(diào)試,使用調(diào)試工具"
L4(高級) 高級調(diào)試
"① 可以通過JDB附加進程,調(diào)試定位問題
② 精通JAVA調(diào)試原理,熟練掌握jstack,jmap,jstat等工具,能定位高難度的性能問題
③ 熟練掌握其他的性能調(diào)優(yōu)分析工具及方法:OQL、Visual VM、Java Flight Recorder等
④ 能承擔(dān)部門級調(diào)試技術(shù)賦能"
5. 小結(jié)與擴展
從問題定位的場景來看,或許也可以分為迭代開發(fā)中的debug和線上問題的攻關(guān)定位。
迭代開發(fā)中的debug調(diào)試方法:
1. 本地斷點調(diào)試
2. 服務(wù)器上遠程調(diào)試
3. 日志查看:業(yè)務(wù)日志、數(shù)據(jù)庫日志、操作系統(tǒng)日志
4. JVM堆棧信息
線上問題定位方法:
1. 日志采集與查看
2. 堆dump信息,GC日志、堆棧信息
本文對debug能力的理解做簡要記錄。寫在文末:
- 重視java基礎(chǔ)/OO能力/UT能力等基礎(chǔ),注重編碼質(zhì)量
- 積累項目公共組件和基本框架流程的理論和實踐經(jīng)驗
- 具體問題具體分析
轉(zhuǎn)載于:https://www.cnblogs.com/eaglediao/p/9333619.html
總結(jié)
以上是生活随笔為你收集整理的关于DEBUG的一点体会的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Solr分组聚合查询之Group
- 下一篇: Typescript尝试