純粹是個(gè)人學(xué)習(xí)總結(jié),如有不對(duì)的地方請(qǐng)吐槽。
調(diào)試基礎(chǔ),在這就不說(shuō)了,進(jìn)入正文
Evaluate Expression
這個(gè)功能非常實(shí)用,可以在斷點(diǎn)處直接進(jìn)入一個(gè)求值環(huán)境,在這里你可以執(zhí)行任何你感興趣的表達(dá)式;如下圖:

條件斷點(diǎn)
假設(shè)你的斷點(diǎn)在一個(gè)列表的循環(huán)里面,可是你只對(duì)這個(gè)列表的某一個(gè)元素感興趣,只想在遇到這個(gè)元素的時(shí)候才斷下來(lái);你是一直人肉 F9 直到滿足條件嗎?條件斷點(diǎn)就是滿足這種需求的,顧名思義,在特定條件下的斷點(diǎn)。使用起來(lái)也非常簡(jiǎn)單,在你的斷點(diǎn)上鼠標(biāo)右鍵會(huì)出現(xiàn)一個(gè)小窗口,寫上條件即可。

日志斷點(diǎn)
很多時(shí)候我們調(diào)試的時(shí)候更多的是打印日志定位異常代碼,縮小范圍之后再使用斷點(diǎn)解決問(wèn)題;所以經(jīng)常做的事情就是在代碼里面添加日志信息,輸出函數(shù)參數(shù),返回信息,輸出我們感興趣的變量信息等。
首先我們?cè)谙胍敵鲂畔⒌牡胤较乱粋€(gè)斷點(diǎn);然后右鍵這個(gè)斷點(diǎn),在出現(xiàn)的設(shè)置框里面把這個(gè)斷點(diǎn)的 suspend 屬性設(shè)置為 False ,這樣雖然叫做“斷點(diǎn)”,但是并不會(huì)真正斷下來(lái);然后,我們?cè)?log message 里面填上我們想要輸出的日志信息。如下圖(注意標(biāo)紅位置):

方法斷點(diǎn)
傳統(tǒng)的調(diào)試方式是以行為單位的,所謂單步調(diào)試;但是很多時(shí)候我們關(guān)心的是某個(gè)函數(shù)的參數(shù),返回值;(回想一下我們使用日志的時(shí)候打印的最多的信息難道不是函數(shù)的參數(shù)和返回值嗎?)使用方法斷點(diǎn),我們可以在函數(shù)級(jí)別進(jìn)行調(diào)試;如果經(jīng)常跳進(jìn)跳出函數(shù)或者只對(duì)某個(gè)函數(shù)的參數(shù)感興趣,這種類型的斷點(diǎn)非常實(shí)用。具體使用方法有兩種方式;最簡(jiǎn)單的是在你感興趣的方法頭那一行打上斷點(diǎn),這時(shí)候你會(huì)發(fā)現(xiàn)斷點(diǎn)圖標(biāo)有點(diǎn)不一樣,這就是方法斷點(diǎn)了,如下圖:

異常斷點(diǎn)
在有些情況下,我們只對(duì)某些特定的異常感興趣,或者我們只對(duì)異常感興趣;我們希望只要程序發(fā)生異常程序就能斷下來(lái);這好像保存現(xiàn)場(chǎng)一樣,只要發(fā)生命案了(異常),第一時(shí)間保存現(xiàn)場(chǎng),這樣什么指紋之類的線索就會(huì)清晰很多,壞蛋就算想逃也是插翅難飛啊。
Android Studio給了我們這個(gè)能力!那就是異常斷點(diǎn)!可以在特定異常發(fā)生的時(shí)候,直接讓整個(gè)程序斷下來(lái);如果你對(duì)所有異常感興趣,直接 Throwable 即可。
具體做法是,進(jìn)入 Run -> View BreakPoints 或者使用快捷鍵打開(kāi)斷點(diǎn)設(shè)置窗口;如下圖:

點(diǎn)擊左上角的 ? ,會(huì)出現(xiàn)一個(gè)選擇框;選擇Exception Breakpoint;然后會(huì)出現(xiàn)一個(gè)對(duì)話框,選擇你感興趣的異常:

變量斷點(diǎn)
在每個(gè)變量在不知道的情況下被改了值,可以用這個(gè)斷點(diǎn)來(lái)查看。


原文地址丟失