Android 進階——藉助Android Studio自帶的中高級調試功能快速定位和查找Bug

引言

作爲一個程序員,Debug絕對是最重要的技能和手段之一,毫不客氣地說有相當數量的程序員或許沒有真正掌握調試技能,儘管Android Studio 已經提供了相當便捷的調試功能,但是他們可能只知道“Debug app”這一種方式進入調試模式,這篇文章很簡單但是很實用。

一、Android Studio 的調試模式

在Android Studio中可以通過兩種方式進入調試模式:

  • 直接點擊Debug按鈕,以Debug模式啓動App
  • 啓動了App進程之後,點擊“Attach to Debugger to Android Process”,然後選擇要調試的進程,點擊“OK”之後就進入了調試模式,如果有斷點就會進入斷點。
    在這裏插入圖片描述

二、Android Studio 的Debug 窗體

在這裏插入圖片描述

  1. 以調試模式重啓App
  2. 快速執行到下一個斷點
  3. 停止調試
  4. 所有的斷點視圖,可以快速查看所有的斷點,進行一系列的動態條件配置
  5. 快速設置斷點無效
  6. Get Thread Dump 獲取線程堆棧快照,點擊一次獲取一次
  7. 以Debug模式啓動App
  8. Attack Debugger to Android Process (選擇調試線程,App啓動後可以快速進入調試模式)
  9. Step Over(F8 逐句調試,遇到內部函數直接跳過內部執行細節)
  10. Step Into(F7 逐句調試,遇到內部函數不會跳過內部執行細節)
  11. Force Step Into
  12. Step out(當執行到內部函數內時,可以直接略過執行細節直接返回)
  13. Run to Cursor

三、查看方法棧幀和線程堆棧快照

通過方法棧幀可以看得出方法的調用路徑(自下而上,下部是起點),點擊“Get Thread Dump” 可以得到關於線程的更詳細的堆棧快照:
在這裏插入圖片描述

  • runnable——表示正常運行狀態
  • waiting——表示阻塞態

Thread Dump是非常有用的診斷Java應用問題的工具。每一個Java虛擬機都有及時生成所有線程在某一點狀態的thread-dump的能力,雖然各個 Java虛擬機打印的thread dump略有不同,但是大多都提供了當前活動線程的快照,及JVM中所有Java線程的堆棧跟蹤信息,堆棧信息一般包含完整的類名及所執行的方法,如果可能的話還有源代碼的行數。

點擊對應的線程時就會顯示對應的信息,而通過兩個變量監控窗體,我們可以通過 “Add to Watchs”實時監控任意變量的值,然後在變量上右鍵會彈出一些操作:

  • 拷貝值、設置值
  • Evaluate Expressions 計算表達式,可以模擬計算表達式
    在這裏插入圖片描述
  • Show Referring Objects 顯示某個變量的引用路徑
    在這裏插入圖片描述

四、條件斷點調試

在斷點上點擊右鍵,就進入斷點的配置窗體:
在這裏插入圖片描述
經過以上配置之後,當view.getId()的值等於R.id.mainMenu1IV時這個斷點纔有效,即所謂的條件斷點。
在這裏插入圖片描述
當然還有更多條件可以去配置,需要你們自己在項目中應用。未完待續…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章