還在用 Debug Run 按鈕?試試這些調試技巧 | 掘金技術徵文

版權聲明:shell

本帳號發佈文章均來自公衆號,承香墨影(cxmyDev),版權歸承香墨影全部。app

未經容許,不得轉載。工具

1、前言

在實際開發過程當中,若是碰到 Bug ,必然免不了須要打印輸出一些 Log 信息,或者直接進入 Debug 模式進行調試。而在 Android Studio 中,其實也提供了很是便利的進入 Debug 模式的方法。可是有些時候也不太方便,例如須要從新運行一下,若是項目比較大的話,可能會致使編譯運行的時間佔據了咱們查找 Bug 的大部分時間。命令行

本文就這個問題,介紹一下在須要的時候,如何快速的進入 Debug 調試狀態。線程

2、常規模式

在 Android Studio 中,其實已經提供了很是便利的 Debug 的方式。debug


這個幫助的調試條上,已經包含了咱們正常須要使用的全部功能,包括 : Run 、Debug、Attach debugger to Android Process。咱們將它展開來看一下。


Run 按鈕 就沒什麼好說的了,點擊直接運行咱們的項目App到目標設備上。而點擊 Debug 按鈕,就會以 Debug 的模式運行咱們的項目 App 到目標設備上,這個時候若是咱們打上了斷點,在運行到斷點代碼的時候,就會被斷住。

而 Attach debugger to Android Process 是一個很是方便的功能,正如它的英文描述,它能夠選擇當前連接的設備上,處於運行狀態下,而且能夠被 Debug 的進程,將它掛上 Debug 模式。3d


當 Attach 成功以後,你選擇的 Process 就處於 Debug 模式下,能夠進行斷點等 Debug 操做。

3、高級操做

雖然 Attach debugger to Android Process 很是的方便好用,能夠節約咱們再一次 Debug 運行的時間,而且能夠直接掛載一個 Debug 狀態下的線程。調試

可是它也是有缺陷的:code

若是須要調試的斷點,在運行的時機比較靠前的話,例如:調試 Application.onCreate() 的代碼,咱們就無法使用這種 Attach 的方式,掛載一個進程進行調試了。cdn

而一般來講,咱們查找 Bug 常常須要屢次 Debug 來定位問題。而若是使用 Debug 按鈕來運行調試 App 的話,也會很是的耽誤時間。

那麼有沒有辦法讓咱們能及時的使用 Attach debugger to Android Process 的方式掛載上調試進程呢?

還記得當咱們使用 Debug Run 調試 App 的時候,會出現一個 Waiting For Debugger 的對話框,這個對話框就是一個等待調試App 進程被掛載的等待對話。


那麼實際上,咱們只須要讓其運行的時候,等待咱們去 Attach 這個進程便可。

一、am 命令設置調試應用

其實 adb 的 am 命令中,就有設置某個 App 以 Debug 的方式運行,命令也很是的簡單。

adb shell am set-debug-app -w <package_name>

其中:

  • set-debug-app : 用於設置待 Debug 的App。
  • -w: 表示設置爲 wait 狀態,在進程被啓動的時候,等待 Debugger 進行調試。
  • :就很是好理解了,爲咱們須要調試的 App。

這樣,當咱們再次運行 指定的 App 的時候,就會出現上面的 Waiting For Debugger 窗口,一直處於堵塞狀態,直到咱們使用 Attach debugger to Android Process 的方式將其掛載上。

而這種方式是一次性的,再次運行就會恢復以前的狀態。可是就像前面說的,常常須要重複屢次的 Debug 才能定位問題而且解決問題,那麼屢次調試則在所不免,若是每次都須要執行這個命令,明顯更麻煩了,有點得不償失。

其實 set-debug-app 還提供了一個 —persistent 的參數,設置一個須要持續調試的 App。

完整的命令以下:

adb shell am set-debug-app -w --persistent <package_name>

當使用 —persistent 標記以後,這個 App 就會一直被處於調試模式來運行,因此每次啓動就會彈出 Waiting For Debugger 的窗口等待咱們,哪怕咱們卸載從新安裝,也不會改變。固然若是咱們安裝一個 Release 簽名的同名 App ,必然不會處於Debug模式。

若是添加了 —persistent 參數以後,調試完成以後,還須要使用 clear-debug-app 來清理被標記爲 debug 的 App。

完整的命令以下:

adb shell am clear-debug-app

而這些,都是能夠在 am 的文檔中找到答案的,am 其實提供了不少很是好用的工具,方便咱們使用。

2、使用開發者選項

若是你以爲使用 命令行 的工具,仍是很是的不方便,那麼其實也是有圖形話界面工具給咱們使用的。

咱們若是須要調試設備,都須要在開發者選項中,開啓 USB 調試,這是常識。而開發者選項中,提供了設置某個 App 爲調試應用的選項。

進入 開發者選項,找到 『選擇調試應用』,在其中找到咱們須要調試的 App,而後再開啓『等待調試器』。


這樣其實和咱們使用 am set-debug-app 的方式是同樣的。固然,在使用完成以後,還須要將『 等待調試器』的開關關閉,否者會一直等待掛載。

4、結語

最後,我想說,當你在作重複的事情的時候,做爲一開發者 ,你須要思考若是跟快捷的完成這項工做,而不是一味的作重複的工做。

公衆號二維碼.jpg
相關文章
相關標籤/搜索