Android Studio 你不能不會的Debug 除錯技巧
基本使用
Debug App有兩種途徑,第一種是直接點擊下圖運行按鈕右側的小蟲狀圖標,運行並除錯當前Project,這個我想大家都知道。
第二種就是調試當前已經處於運行狀態下的App,這也是我們用的更多的一種除錯手段,即Attach debugger to Android process。點擊運行按鈕右側第三個按鈕,彈出Choose Process窗口,選擇對應的程序,點擊OK按鈕即可進入除錯模式,此時,我們便可以在需要的地方直接下斷點除錯代碼了:
接下來就是常見的調試方法了,在Debug窗口頂部工具欄有一排操作按鈕,比如Step Over(單步執行)、Step Into(進入方法)等,如圖所示:
打斷點和取消斷點最直接的方式就是單擊目標代碼行的行號右側空白處,然後在Debug窗口左側有個斷點瀏覽按鈕View Breakpoints,位於停止按鈕下方第一個,可以瀏覽Project中的所有斷點,同時可以添加刪除斷點:
條件斷點
有時候,我們的斷點打在了循環體裡面,但是我們只想看某一特定循環次數下的運行情況,難道要使用Run to Cursor功能不停地跳至下一次斷點直至滿足我們的要求嗎?
如果你知道條件斷點的話,一定會悔不當初。條件斷點可以滿足開發人員自己輸入條件,比如fori循環中輸入i == 5即可讓程序直接運行至第六次循環,for each循環中針對list某一元素下的斷點調試。只需要右鍵點擊斷點,在彈出的窗口中輸入Condiction條件,點擊Done按鈕,然後當程序執行到循環體時,會在滿足條件的一次循環中停下來,供我們除錯:
日誌斷點
列印日誌也是跟蹤程序分析問題的一個非常有效的手段,但是如果我們的程序已經運行並且處於除錯模式,此時如果想列印日誌更加直觀的分析代碼,難道還要停止除錯、添加Log代碼並重新編譯運行嗎?
如果你知道日誌斷點,就不用如此大費周折,費時費力了。還是右鍵點擊斷點,在彈出的窗口中取消勾選Suspeng複選框(即表示程序運行至此斷點時不會停下來供開發者除錯),然後勾選Log evaluated expression:,並輸入列印語句即可。這樣,當Debug模式下的程序執行至此,不會停下來,而是在控制台中列印對應訊息,如:
對象求值
在斷點處,如果有變量對象,系統提供了表達式求值功能,針對Variables視圖中的變量對象,我們可以輸入任何計算語句,實時查看錶達式計算結果。具體操作為,右鍵Variables視圖中的變量對象,選擇Evaluate Expression,彈出表達式窗口,輸入任何你想要的計算語句,點擊Evaluate計算按鈕,即可顯示Result結果:
方法斷點
通常我們會對方法裡的代碼添加斷點調試,很少對方法本身調試。其實,如果只是為了看到方法的參數和返回結果,我們可以在定義方法的第一行打斷點,直接對方法本身調試,此時斷點的展示圖標樣式也會與眾不同:
變量斷點
有時候,我們想知道自定義的變量的何時何地發生了改變,就可以使用變量斷點。變量斷點的圖標樣式也與眾不同,在變量定義行打斷點,開啟Debug模式,在程序執行的過程中,如果該變量的值發生改變,程序會自動停下來,並定位在改變變量值的地方,供開發者調試:
異常斷點
程序在執行的過程中可能會出現各種各樣的未知性異常,如果能在發生異常的時候第一時間讓程序停下來,並定位到異常出現的地方,供開發者調試,那當然是極好的。而萬能的Android Studio就提供了這樣的功能。
打開斷點管理器,這裡有兩種方式打開:點擊工具欄菜單Run,選擇View Breakpoints;在Debug窗口直接點擊View Breakpoints圖標。點擊左上角加號按鈕,可以添加各種斷點,包括前文提到的Method Breakpoints和Field Watchpoints斷點,這裡我們選擇Exception Breakpoints異常斷點,在彈出的Enter Exception Class窗口中輸入需要監控的異常類別即可:
歡迎補充
以上便是使用Android Studio工具的開發過程中很是實用但卻少見的Debug技巧,當然所有這些操作都可以通過快捷鍵打開,將滑鼠光標移到對應圖標處,都會顯示對應快捷鍵組合,大家自行酌情使用。
當然,如果你還有更好的Debug技巧,歡迎留言補充,讓我們一起在分享中學習,交流中進步。
留言
張貼留言