[TOC]java
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堆棧信息spa
線上問題定位方法: 1. 日誌採集與查看 2. 堆dump信息,GC日誌、堆棧信息操作系統
本文對debug能力的理解作簡要記錄。寫在文末:
- 重視java基礎/OO能力/UT能力等基礎,注重編碼質量
- 積累項目公共組件和基本框架流程的理論和實踐經驗
- 具體問題具體分析