關於DEBUG的一點體會

[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能力等基礎,注重編碼質量
  • 積累項目公共組件和基本框架流程的理論和實踐經驗
  • 具體問題具體分析
相關文章
相關標籤/搜索