1. 程式人生 > >Android Studio 你需要掌握的Debug除錯技巧

Android Studio 你需要掌握的Debug除錯技巧

從左到右依次為

Step Over:下一步,不會進入方法內部。

Step Into:進入到方法內部。

Force Step Into:進入到系統方法內部。

Step Out:跳出該方法。

Run to Cursor:進入到下個斷點,只有一個斷點就到下一次的該斷點。

===================================================

原文http://blog.csdn.net/yaoobs/article/details/51296198

最基本的除錯技巧

千萬不要覺得那些簡單的基本的東西不重要。事實證明,這些技巧往往是我們平時使用最為頻繁的,所以,先從這些講起。

1.設定斷點

設定斷點(圖1) 
選定要設定斷點的程式碼行,在行號的區域後面單擊滑鼠左鍵即可。

2.Debug模式啟動APP(Shift+F9)

點選紅色箭頭所指向的蟲子圖示,Debug模式啟動APP。 
Debug模式啟動APP(圖2.1)

APP啟動後,執行至第一處斷點處會停下來,同時IDE下方出現Debug檢視,紅色的箭頭指向的是現在除錯程式停留的程式碼行,方法Add()中,程式的第20行。紅色箭頭懸停的區域是程式的方法呼叫棧區。在這個區域中顯示了程式執行到斷點處所呼叫過的所用方法,越下面的方法被呼叫的越早。 
同時也能看到,設定斷點的程式碼行變數i處在監控之中,此時,i = 0。

Debug檢視(圖2.2)

3.單步除錯

3.1 step over(F8)

點選紅色箭頭指向的step over按鈕(圖中我們按了兩次讓 i =1,看的明顯一些),程式向下執行一行(如果當前行有方法呼叫,這個方法將被執行完畢返回,然後到下一行。就是說不會進入到呼叫的其他方法中去)。 
step over(圖3.1)

3.2 step into(F7)

點選紅色箭頭指向的step into按鈕,程式向下執行一行。跟step over不同的是:如果該行有方法呼叫且為自定義方法,則執行進入自定義方法(不會進入官方類庫的方法)。 
step into(圖3.2.1)

點選以後,進入到Add()方法之中。

step into(圖3.2.2)

step into按鈕右邊的 Force step into按鈕(Alt+Shift+F7)可以進入包括官方類庫在內的任何方法。

3.3 step out(Shift+F8)

如果在除錯的時候你進入了一個方法(如Add()),並覺得該方法沒有問題,你就可以使用step out跳出該方法,返回到該方法被呼叫處的下一行語句。值得注意的是,該方法已執行完畢。 
step out(圖3.3.1)

沒有問題,點選step out按鈕,跳出該方法,該方法執行完畢。 
step out(圖3.3.2)

這個Drop frame暫時還沒有搞清楚怎麼用,等以後補充。。。

3.4 run to Cursor(Alt+F9)

run to Cursor(圖3.4.1) 
設定多個斷點時,可利用 run to Cursor按鈕在兩個斷點之間跳轉。 
run to Cursor(圖3.4.2) 
其實Resume Program也是這個功能,它們有什麼不同還不清楚。。。

3.5 Watches

如果某個類或方法中變數太多,在Variables面板裡觀察的話會很費勁,這時就會需要用到Watches這個工具了。 
點選Watches下方的+號,然後手動輸入變數的名稱回車就OK了。 
Watches(圖3.5.1)

也可以選擇Variables中的變數名然後點選右鍵,選擇Add to Watches,然後Watches面板中就有了。 
Watches(圖3.5.2) 
還能看到SetValue選項,可以手動更改某個變數的值,有時候會很有用。

3.6 View BreakPoints(Ctrl+Shift+F8)

View BreakPoints(圖3.6.1)

點選箭頭指向的按鈕,會彈出一個視窗,如下圖。

View BreakPoints(圖3.6.2)

在這裡可以檢視設定過的所有斷點(箭頭所指)。另外,還可以在這裡設定條件斷點,日誌斷點,異常斷點等,這些高階技巧我們將在本系列的下篇文章裡介紹,敬請期待!

等等!先彆著急翻頁,本期還有最後一個壓軸的技術點要分享給大家。 
想象一下下面的場景:你的APK如果已經執行在普通模式(非Debug)的情況下,你突然想Debug,而又不想重新執行浪費時間,該怎麼辦呢? 
普通模式下想設定斷點進行除錯可不可以呢? 
當然是可以的,不僅可以,這種方式已經漸漸替代了原先的方案,畢竟很方便,不是嗎?那具體要怎麼做呢?

4 attach process

attach process(圖4.1)

正常執行APK 
attach process(圖4.2)

執行起來之後,設定斷點 
attach process(圖4.3)

執行Run->Attach debugger to Android process 
attach process(圖4.4)

attach process到指定程序,條件觸發之後就可以直接進入除錯模式。之後該怎麼做不用我再說了吧?