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。
(圖2.1)
APP啟動後,執行至第一處斷點處會停下來,同時IDE下方出現Debug檢視,紅色的箭頭指向的是現在除錯程式停留的程式碼行,方法Add()中,程式的第20行。紅色箭頭懸停的區域是程式的方法呼叫棧區。在這個區域中顯示了程式執行到斷點處所呼叫過的所用方法,越下面的方法被呼叫的越早。
同時也能看到,設定斷點的程式碼行變數i處在監控之中,此時,i = 0。
(圖2.2)
3.單步除錯
3.1 step over(F8)
點選紅色箭頭指向的step over按鈕(圖中我們按了兩次讓 i =1,看的明顯一些),程式向下執行一行(如果當前行有方法呼叫,這個方法將被執行完畢返回,然後到下一行。就是說不會進入到呼叫的其他方法中去)。
(圖3.1)
3.2 step into(F7)
點選紅色箭頭指向的step into按鈕,程式向下執行一行。跟step over不同的是:如果該行有方法呼叫且為自定義方法,則執行進入自定義方法(不會進入官方類庫的方法)。
(圖3.2.1)
點選以後,進入到Add()方法之中。
(圖3.2.2)
step into按鈕右邊的 Force step into按鈕(Alt+Shift+F7)可以進入包括官方類庫在內的任何方法。
3.3 step out(Shift+F8)
如果在除錯的時候你進入了一個方法(如Add()),並覺得該方法沒有問題,你就可以使用step out跳出該方法,返回到該方法被呼叫處的下一行語句。值得注意的是,該方法已執行完畢。
(圖3.3.1)
沒有問題,點選step out按鈕,跳出該方法,該方法執行完畢。
(圖3.3.2)
這個Drop frame暫時還沒有搞清楚怎麼用,等以後補充。。。
3.4 run to Cursor(Alt+F9)
(圖3.4.1)
設定多個斷點時,可利用 run to Cursor按鈕在兩個斷點之間跳轉。
(圖3.4.2)
其實Resume Program也是這個功能,它們有什麼不同還不清楚。。。
3.5 Watches
如果某個類或方法中變數太多,在Variables面板裡觀察的話會很費勁,這時就會需要用到Watches這個工具了。
點選Watches下方的+號,然後手動輸入變數的名稱回車就OK了。
(圖3.5.1)
也可以選擇Variables中的變數名然後點選右鍵,選擇Add to Watches,然後Watches面板中就有了。
(圖3.5.2)
還能看到SetValue選項,可以手動更改某個變數的值,有時候會很有用。
3.6 View BreakPoints(Ctrl+Shift+F8)
(圖3.6.1)
點選箭頭指向的按鈕,會彈出一個視窗,如下圖。
(圖3.6.2)
在這裡可以檢視設定過的所有斷點(箭頭所指)。另外,還可以在這裡設定條件斷點,日誌斷點,異常斷點等,這些高階技巧我們將在本系列的下篇文章裡介紹,敬請期待!
等等!先彆著急翻頁,本期還有最後一個壓軸的技術點要分享給大家。
想象一下下面的場景:你的APK如果已經執行在普通模式(非Debug)的情況下,你突然想Debug,而又不想重新執行浪費時間,該怎麼辦呢?
普通模式下想設定斷點進行除錯可不可以呢?
當然是可以的,不僅可以,這種方式已經漸漸替代了原先的方案,畢竟很方便,不是嗎?那具體要怎麼做呢?
4 attach process
(圖4.1)
正常執行APK
(圖4.2)
執行起來之後,設定斷點
(圖4.3)
執行Run->Attach debugger to Android process
(圖4.4)
attach process到指定程序,條件觸發之後就可以直接進入除錯模式。之後該怎麼做不用我再說了吧?