- 準(zhǔn)備一段代碼:
for (int i = 0; i < 10; i++) {
//獲取當(dāng)前i的值
int selector = i;
//打log查看當(dāng)前i的值(此步多余温算,實(shí)際開發(fā)請忽略)
Logger.e("for當(dāng)前的i的值:" + i);
//調(diào)用方法
stepNext(i);
}
- 設(shè)置斷點(diǎn)(點(diǎn)擊紅點(diǎn)位置添加或取消斷點(diǎn))
- 點(diǎn)擊debug模式運(yùn)行
- 查看調(diào)試面板
一、簡單調(diào)試
1. step over:一步步往下走
當(dāng)前程序運(yùn)行的位置,我們看到i的值已經(jīng)在程序代碼中展示出來了火鼻,黃色的代碼處,這個(gè)是AS的功能,對于我們調(diào)試來講弛秋,這簡直是非常大的福利了。
點(diǎn)擊單步調(diào)試按鈕或按快捷鍵F8俐载,看看效果蟹略。這里我們看到selector變量的值已經(jīng)出來了
selector:0
,我們在看看黃色位置i的當(dāng)前值是0。
這時(shí)我們繼續(xù)F8遏佣,我們切換到logcat查看日志挖炬,我打印出的i的值是0,
我們在切回道Debugger面板状婶,可以看到Variables顯示面板中意敛,有i的值是0馅巷,selector的值是0。以及我們可以看到Frames控制面板中可以顯示出當(dāng)前程序的位置在:onCreate():28,第28行草姻。
2. step into:看到方法往里走
比如我們的for循環(huán)當(dāng)中調(diào)用了一個(gè)
stepNext(int i)
方法钓猬,當(dāng)我們走到這里想看看這個(gè)方法里面的運(yùn)行過程的時(shí)候我們可以這樣,當(dāng)走到這個(gè)方法的時(shí)候我們可以按下F7,或者如下圖的圖標(biāo)撩独。
這時(shí)就走到了stepNext方法當(dāng)中敞曹。
在這里打印了一個(gè)log,我們再按一下F8我們來看看Logcat, 這里我打印的log都是為了做教程用综膀,調(diào)試我們就不用打log了直接看顯示面板就OK了
3. force step into :所有方法看完整
這個(gè)是可以看到你所調(diào)用的所有方法的實(shí)現(xiàn)會(huì)讓你跟著它走一遍澳迫,研究源碼使用非常方便
4. step out :有斷點(diǎn)下一個(gè),走完斷點(diǎn)繼續(xù)走
這里如果我們的一個(gè)流程當(dāng)中剧劝,包括調(diào)用的方法橄登,如果有斷點(diǎn)走到下一個(gè)斷點(diǎn),如果沒有斷點(diǎn)讥此,而是在一個(gè)調(diào)用的方法當(dāng)中拢锹,會(huì)跳出這個(gè)方法,繼續(xù)走萄喳。
這里理解比較難面褐,舉個(gè)例子:
(上圖)我現(xiàn)在程序位置在第一個(gè)斷點(diǎn)位置(24行),我調(diào)用的stepNext方法中也有一個(gè)斷點(diǎn)取胎,此時(shí)我按下step out按鈕會(huì)走到stepNext中的斷點(diǎn)處(39行)我此時(shí)如果再按一下step out 會(huì)走到stepNext方法的調(diào)用出的下一個(gè)可執(zhí)行代碼(30行)
(上圖)如果我現(xiàn)在程序位置在stepNext的方法中展哭,如果我此時(shí)按下step out,會(huì)走到stepNext方法的調(diào)用出的下一個(gè)可執(zhí)行代碼(30行)
5. run to Cursor :下個(gè)斷點(diǎn)我們見
這里的意思就是說闻蛀,會(huì)很快執(zhí)行到下一個(gè)斷點(diǎn)的位置匪傍,而且可以靜如任何調(diào)用的方法
二、高級調(diào)試
1. 跨斷點(diǎn)調(diào)試
如果我們設(shè)置了多個(gè)斷點(diǎn)觉痛,現(xiàn)在我們需要直接跳轉(zhuǎn)到下一個(gè)斷點(diǎn)役衡,那么直接點(diǎn)擊下圖就可以了
2.觀察變量
如果我們想觀察1個(gè)或者幾個(gè)變量的值的變化,如果我們在Variables顯示面版中觀察如果我這里有太多太多的自定義變量和系統(tǒng)變量了薪棒,那么就難觀察了手蝎,我們可以做如下操作:
點(diǎn)擊Watches,點(diǎn)擊+號(hào),然后輸入變量的名稱回車就OK了俐芯,而且會(huì)有歷史記錄哦
如果變量名比較長我們可以這樣:
選擇[Variables]中的變量名然后點(diǎn)擊[右鍵]棵介,選擇[Add to Watches],然后Watches面板中就有了
3.設(shè)置變量的值
在程序中有很多的條件語句和循環(huán)語句,調(diào)試也是比較耗時(shí)的吧史,我們可以通過快速設(shè)置變量的值來加快調(diào)試速度邮辽,我們可以做如下操作:
選擇[Variables]中的變量名然后點(diǎn)擊[右鍵],選擇[Set Value..]或者選擇之后直接F2(如上圖)(下圖為Variables面板)
4.查看斷點(diǎn)
點(diǎn)擊之后我們可以看到所有的斷點(diǎn),以及位置代碼,也可以設(shè)置一些屬性
這里寫圖片描述
5.停止調(diào)試
要注意的是這里的[停止調(diào)試]不是讓程序停止吨述,而是跳過所有調(diào)試
這里寫圖片描述到這里我們的Android Studio的斷點(diǎn)調(diào)試和高級調(diào)試就完畢了岩睁。