引言
作爲一個程序員,Debug絕對是最重要的技能和手段之一,毫不客氣地說有相當數量的程序員或許沒有真正掌握調試技能,儘管Android Studio 已經提供了相當便捷的調試功能,但是他們可能只知道“Debug app”這一種方式進入調試模式,這篇文章很簡單但是很實用。
一、Android Studio 的調試模式
在Android Studio中可以通過兩種方式進入調試模式:
- 直接點擊Debug按鈕,以Debug模式啓動App
- 啓動了App進程之後,點擊“Attach to Debugger to Android Process”,然後選擇要調試的進程,點擊“OK”之後就進入了調試模式,如果有斷點就會進入斷點。
二、Android Studio 的Debug 窗體
- 以調試模式重啓App
- 快速執行到下一個斷點
- 停止調試
- 所有的斷點視圖,可以快速查看所有的斷點,進行一系列的動態條件配置
- 快速設置斷點無效
- Get Thread Dump 獲取線程堆棧快照,點擊一次獲取一次
- 以Debug模式啓動App
- Attack Debugger to Android Process (選擇調試線程,App啓動後可以快速進入調試模式)
- Step Over(F8 逐句調試,遇到內部函數直接跳過內部執行細節)
- Step Into(F7 逐句調試,遇到內部函數不會跳過內部執行細節)
- Force Step Into
- Step out(當執行到內部函數內時,可以直接略過執行細節直接返回)
- 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時這個斷點纔有效,即所謂的條件斷點。
當然還有更多條件可以去配置,需要你們自己在項目中應用。未完待續…