Android Studio 是個發工具,其自身帶調式環境是很強大的,我們要擺脫只會使用Log列印日誌的低效的方法,掌握高級調試技巧對每個Android開發者都是很必要的,廢話少說,直入正題 調試方式:通過下麵方法進入調試 運行調試:點擊齒輪運行按鈕,IDE出現調試視窗; 附加進程: 如果App正在 ...
Android Studio 是個發工具,其自身帶調式環境是很強大的,我們要擺脫只會使用Log列印日誌的低效的方法,掌握高級調試技巧對每個Android開發者都是很必要的,廢話少說,直入正題
調試方式:通過下麵方法進入調試
運行調試:點擊齒輪運行按鈕,IDE出現調試視窗;
附加進程: 如果App正在運行,點擊“蟲子”圖標選擇要調試的App進程即可;
成功操作後出現下麵的DEBUG懸浮欄,下一步就可以開始設置斷點
開始調試:
在代碼行滑鼠點擊左鍵就可以了,程式就能自動運行到斷點;
步進方式:是調試的核心和精華,掌握好很容易能獲得想要的數據,打開Run菜單我們看到豐富的步進方式(快捷方式根據方案和配置可以自由設定)
Step Into:單步前進,如果斷點包含子方法則進入方法(不會進入官方類庫的方法);
Force Step Into:在 Step Into 的基礎上能進入任何方法;
Smart Step Into:語句包含兩個或者以上方法鏈式調用,可以選擇進入那個方法,包括匿名內部類,尼姆達表達式也可以;
Step Out :單步前進,如果已在子方法裡面則跳出;
Step Over :單步前進,不進入子方法;
Drop Frame: 點擊該按鈕後,你將返回到當前方法的調用處重新執行,並且所有上下文變數的值也回到那個時候。只要調用鏈中還有上級方法,可以跳到其中的任何一個方法;
Resume Program: 繼續執行;
Force Run to Cursor: 顧名思義,就是直接跳到游標所在位置,這個非常方便調試所需要的語句;
說完步進,現在說說斷點;
條件斷點:在斷點的位置設置條件,那隻有符合條件的情況下才停下來,例如調試一個for迴圈的時候有幾百次迴圈但是想看到某個次數時候則相當方便;
方法斷點:在方法開頭設置,斷點標識紅色四黑點的標識;
日誌斷點:滑鼠右鍵斷點,然後去掉Suspend,在log evaluated expression輸入要列印的表達式:”setValue=”+getValue(),然後運行程式;
看控制台我們能發現斷點日誌:
選log message to console後發現日誌信息也被列印出來
異常斷點:異常的時候觸發的斷點:1、點擊斷點管理,然後新增一個異常斷點
設置一個能產生異常的方法並執行它,就會發現異常會在這裡停掉;
設置一個能產生異常的方法並執行它,就會發現異常會在這裡停掉;
臨時斷點:斷點停下之後,就會被移除,調試過程中只會斷掉一次,按 ATL+滑鼠左鍵 就可以出現
失效斷點:暫時讓斷點失效,無需把它刪除;方法:ALT+滑鼠左鍵 在斷點上點擊
觀察調試:
當斷點命中後,我們當然就是要觀察並獲取結果
-
觀察變數:在斷點停留時候,在變數上 ALT+滑鼠左鍵 點擊就可以看到斷點的所有信息;
改變變數值:例如執行方法原來的值:
在Variables視窗右鍵滑鼠修改就可以改變值了:
添加到觀察視窗:如果多個標量或者多個表達式在多個不同的地方,要上下觀察是很麻煩的,我們可以把它Add to Watchs, 然後在觀察視窗就可以一次看到多個變數值;
計算表達式:計算這個變數的值,result運行到中間查看變數值就出現這樣的情況
計算方法調用結果: 輸入方法getValue(), 點擊執行,就可以得到這個方法的結果;
代碼片段模式:這個可以運行一段代碼得到結果而非一個表達式:
例如我們修改這個變數的值的片段:
標記object;選擇變數右鍵出現Mark Object菜單,點擊後輸入標簽就可以了:
至此大致內容完畢,關於調試的技巧,總的來說一個是斷點設定,一個是步進方法的掌握,希望大家多實踐,有任何問題歡迎寫信給我或者留言。最後,基礎很簡單,但很重要,不要看不起,走好每一步才能走得更遠。
歡迎長按二維碼關註我的公眾號: