一篇文章讓你弄懂Android Debug調試

疫情的特殊時期,但願你們注意安全,武漢加油。文章主要是記錄,同時能幫助還不明白的同窗安全

1、打上斷點,啓動debug模式

首先在咱們須要打斷點的代碼行數上稍微偏右,點擊鼠標左鍵,如圖:測試


點擊小爬蟲按鈕,啓動debug模式。


運行成功後以下。能夠看到紅色框內,從下往上的順序運行方法,一直阻塞在咱們打斷點的方法裏;綠色款內,則是展現目前阻塞方法內變量和參數的數值。


2、接下來,咱們一塊兒分解debug的每一個按鈕操做

2.一、Step Over(F8)

這個按鈕的意思:程序向下一步執行,可是要注意,這個按鈕不會主動進入方法體內,而是會直接運行完整個方法後直接運行下一步。
例如:我當前運行的debug,若是一直點擊這個按鈕的話,他會在onCreate()方法內,執行完add(),再執行完sub(),而後直接結束,並不會進add和sub方法內去打印。

debug

2.二、Step Into(F7)

這個按鈕的意思:程序向下一步執行,和Step Over的區別是若是該行有方法調用且爲自定義方法,則運行進入自定義方法(不會進入官方類庫的方法)。
例如:我當前運行的debug,若是你想進入到add()方法裏,那麼點擊Step Into。假如個人add()方法裏,還調用了其餘的自定義方法,若是此時你都想進入各個方法查看則繼續用Step Into,假如你只想停留在add()方法裏,其餘方法只須要獲得個返回值的話,這個時候應該用Step Over;

2.三、Force Step Into

從字面意思上你也能看得出來:能夠進入包括官方類庫在內的任何方法。通常我認爲這個比較適合研究源碼。

2.四、Step out

假如此時調試在add()方法裏,若是咱們以爲add()方法沒有問題,想跳出這個方法繼續debug其餘斷點時,那麼點擊Step out,跳出該方法。

2.五、Run to Cursor

從字面意思上看,他是移動到下個斷點的意思。通過測試以下:

一、假如在咱們當前運行的debug,若是還在onCreate()方法內,當前斷點在add()方法時,點擊Run to Cursor,斷點確實會移動到下個斷點停留在sub()方法。3d

二、若是此時咱們已經進入到add()方法體內,點擊Run to Cursor,咱們會看到,他只是運行完一次for循環後,繼續堵塞。以下圖:調試

因此我總結爲,Run to Cursor是在當前方法體內,運行到下一個斷點。(若是有誤,請大佬及時糾正);

那麼此時,若是咱們已經在add()方法內,就是想直接運行到下個斷點sub()上,怎麼操做呢?點擊Resume Program cdn

這個按鈕不會管你在不在方法內,直接回到下一步斷點上。

3、Debug進階用法。

3.一、Watches

若是咱們在debug的時候,可能會出現不少變量,而咱們就想觀察那麼幾個變量。咱們能夠把他加到watches裏。好比我add()方法裏的變量i,blog

方法1:在咱們觀察的Variables裏,找到那個變量右鍵,選擇Add to Watches事件

方法2:在咱們的Watches界面,點擊+號,在輸入框內,輸入i,進行搜索,也能添加到Watches,方便咱們debug調試開發

3.二、Set Value

好比在咱們的add()方法裏,有一個for循環,正常調試是每次都會從i=0的時候進行調試,若是咱們想直接從i=5的時候進行調試,那麼咱們能夠在Variables界面,找到那個變量值,右鍵選擇Set Value後,輸入咱們5,就能跳過前幾回循環。 源碼

3.三、查看全部斷點

開發中你打了不少斷點忘記取消的狀況下,你能夠點擊View Breakpoints查看全部斷點

打開以下界面:

3.四、中止debug調試

3.五、已經運行的程序,避免從新運行程序的狀況下,怎麼添加debug調試。

這裏多說幾句,由於是在已經運行的程序上,添加debug調試,那麼好比進入一個頁面,onCreate()方法裏的代碼,都已經所有執行完了,好比咱們點擊一個按鈕,須要運行的方法,在這個方法裏咱們才能添加debug調試。好比首先是一個正常運行的程序,咱們給點擊事件里加斷點。

而後,點擊Attach Debugger to Android Process

彈出以下頁面,點擊OK就好了,點擊按鈕就能進行debug調試了


想和我一塊兒成長嗎?請關注個人公衆號

相關文章
相關標籤/搜索