作為開發(fā)者,不光得會開發(fā),遇到問題的時候還得會去解決問題,開發(fā)中去嘗試找問題的原因的方式主要是去debug代碼,這樣會比直接去看代碼,要清晰和直觀的多,而AS的debug功能齊全的不要不要的,今天就學習了之前不了解的強大的debug功能。
依然不會忘記從最簡單和最常見的debug功能開始介紹,學習參考AS-Debug
開啟Ddbug模式
debug的開啟方式我了解到有兩種,一種是直接以debug的方式編譯運行,此時就處于debug模式了:

這個方式就是以debug模式啟動,之后就可以進行debug操作了。
還有一種方式當你已經(jīng)處于運行非Debug模式的情況,但想進行調(diào)試,此時可以進行如下操作:

或者是:

然后選擇我們要debug的進程,也可以進入到debug模式。
開啟簡單的Debug
我給一個簡單的程序加上斷點(斷點應(yīng)該會加吧),

啟動斷點開始簡單調(diào)試:在斷點出觸發(fā)

斷點操作區(qū)
接下來介紹斷點的操作:

第一個:為分步調(diào)試,每操作一次就會執(zhí)行一步,從當前斷點往下執(zhí)行,且相關(guān)變量都會展示出來。
第二個:當調(diào)試執(zhí)行到有方法調(diào)用的時候,進行該操作,會進入到方法體內(nèi)部進行執(zhí)行,如果是類庫中的方法則不進入。
第三個:可以進入到你調(diào)用方法的全部流程,類庫的方法也能進入。
第四個:為可以直接從當前斷點跳到下一個斷點,斷點完后,會執(zhí)行調(diào)起斷點的方法的下一步。
第五個:執(zhí)行到光標處.
最后一個類似計算器的功能鍵,是一個求值表達式功能鍵,可以在執(zhí)行處添加相關(guān)表達式,也可以對指定的變量處進行此操作。
斷點操作區(qū)左邊第一個為將光標跳轉(zhuǎn)到當前斷點執(zhí)行處。

圖中分別為方法調(diào)用棧區(qū)和線程信息區(qū)。
斷點管理區(qū)

第一個:停止目前的應(yīng)用,重新啟動.
第二個:可以直接跳轉(zhuǎn)到下一個斷點區(qū).
第三個:暫停調(diào)試.
第四個:斷點調(diào)試終止.
第五個:斷點管理區(qū). 可以對斷點進行管理,添加斷點的屬性,比如可以添加異常斷點之類.比如添加空指針異常.
第六個:斷點狀態(tài)切換,比如可以臨時取消斷點等 .
setting按鈕可以對斷點調(diào)試時進行相關(guān)設(shè)置,比如返回值的和變量值的實時顯示:


以及對線程信息操作:

總結(jié)
在進行簡單調(diào)試的時候我們只要觀察執(zhí)行處,相關(guān)變量的顯示,以及控制臺變量區(qū)的相關(guān)變量的的顯示以及變化,來達到觀察執(zhí)行引起的變化。
變量觀察區(qū)可以對指定變量進行觀察:


通過指定方式可以改變變量值進行實時反饋

基本的操作相信其實大家都會,接下來介紹一些其他功能.
開啟Debug的騷操作
條件斷點
有時候在做調(diào)試的時候,遇到在循環(huán)條件中進行debug,之前不了解條件斷點的時候,我經(jīng)常會直接寫個if語句來進行直接到指定條件斷點。但是了解了接下來的條件斷點后,根本不需要這么麻煩:
首先在你加的斷點處右鍵就會出現(xiàn)這么一個玩意兒:

輸入框就可以輸入你需要斷點時候的條件,那么斷點就會在指定條件下斷點,是不是比加個if更方便.
臨時斷點
有時候在做斷點調(diào)試的時候,需要臨時查看某個語句的執(zhí)行結(jié)果,但執(zhí)行結(jié)束后又希望它取消斷點,就可以給它添加臨時斷點.
添加方式是:鼠標:ALT+鼠標左鍵 在斷點區(qū)點擊

那么這個斷點就只會執(zhí)行一次后自動消失.
失效斷點
這個用作于,在調(diào)試的時候,我們對于某個斷點希望它臨時失去作用,但是保留其斷點的位置。
ALT+鼠標左鍵 在斷點上點擊

那么這種臨時斷點在調(diào)試的時候就會忽略其存在.
日志斷點
在做開發(fā)的時候喜歡打log,來識別當前運行狀況,但是打log,感覺太麻煩,我們就可以使用日志斷點。
在斷點上點擊鼠標右鍵,把suspend置為非選中狀態(tài),然后在下面的Log evaluated Expression填寫上你需要輸出的信息


非常方便的打出log.
表達式調(diào)試
這個我覺得相當于搜索功能,根據(jù)你給定變量的表達式,可以快速的反饋變量情況:

對于變量的觀察非常便捷,不用通過去變量區(qū)進行查找.
便捷變量觀察

通過Alt+鼠標左鍵 在變量上面點擊,便可對相關(guān)變量進行觀察.
標記
給特定變量進行標記:
選擇變量->鼠標右鍵,選擇mark object

我們可以標識集合中的某個特定實例進行觀察
