適用於:經過打印變量的值來查看某一時刻值是否正確面試
通常的Android開發人員最愛的調試法,使用簡便,僅需一行代碼,輕鬆打印:小程序
Toast.makeText(MainActivity.this, "Toast調試", Toast.LENGTH_SHORT).show();
方即是挺方便的,不過有一點要注意:Android 5.0後,若是把「消息通知的權限」 關閉掉的話,部分機型是不會顯示Toast的!你還可使用Snackbar來顯示值進行調試:性能優化
Snackbar.make(父view, "Snackbar調試", Snackbar.LENGTH_SHORT).show();
或者其餘變通的方法,好比在頁面上添加一個TextView,把值直接顯示在文本框上。架構
Toast調試是挺爽的,可是有兩個問題:工具
1.想調試打印多個值的話,Toast會彈個不停,畢竟同一時刻只有「一個」Toast顯示在前臺; 2.Toast間隔一段時間後會消失,即便你設置了Toast.LENGTH_LONG;性能
可能你一走神,沒來得及看調試的值,Toast就消失了。咱們着實須要一種無需擔憂調試 結果消失的方法——「Log日誌打印法」,就是利用Android系統提供的Log類,在調試 的地方,把日誌打印到「Logcat控制檯」上,使用方法也很是簡單:學習
Log.d("TAG", "Log調試")
當代碼執行到這一句的時候,就會在Logcat控制檯打印調試信息,另外Logcat默認 會打印出全部的日誌信息,咱們能夠作一些過濾來定位到咱們調試的日誌信息。 首先是:「日誌類型」,Android支持6種日誌類型,依次以下:優化
Verbose:詳細,全部類型的日誌信息。 Debug:調試,調試用的日誌信息。 Info:信息,正常使用時須要關注的日誌信息。 Warn:警告,可能有問題,但沒發生錯誤的日誌信息。 Error:錯誤,運行時出現嚴重錯誤的日誌信息。 Assert:斷言。this
舒適提示: 不要上來就Error級別,我之前打Log所有用Log.e,緣由是日誌信息是紅色的,好看… 結果被組長吐槽了一頓,以爲顏色很差看,你能夠按照下述的操做進行自定義。 打開「File」-> 「Settings」-> 「Editor」->「Colors Scheme」->「Android Logcat」 選擇日誌類型,而後去掉勾選,而後點擊選擇顏色色值 lua
這是個人配色方案,讀者能夠設置本身喜歡的顏色:
設置後的配色如圖所示:
自定義Logcat日誌頭信息的顯示內容:點擊面板上的「Logcat Header」來設置日誌頭信息 可設置的內容以下:
右側還能夠「過濾日誌信息」,支持正則,再右面是過濾特定日誌的選項。
若是以爲還不夠的話,能夠點擊最右側的「Edit Filter Configuration」來配置一個本身的過濾器。
另外,還能夠對進行「日誌搜索」,鼠標點擊Logcat中間區域得到焦點,Ctrl + F 調出 搜索工具欄,接着搜索相關的日誌內容。
注意:Android系統的單條日誌打印長度是有限的,長度是固定的4*1024個字符長度。
用Android Studio提供的Debug模式來程序調試
基本的調試流程
打(下)斷點 當程序執行到斷點所在的代碼時,會暫停應用程序的運行,線程被掛起,而後 能夠經過調試器進行跟蹤。 打斷點的方式也很簡單,點擊某行代碼的左側,會出現如圖所示的小紅點。
這個小紅點就是斷點,而在Android Studio中,有多種類型的斷點,下面一一介紹
1) 行斷點 就是上面這種,對特定行進行調試時用到,點擊行所在的左側邊欄便可設置。 右鍵點擊這個斷點,會彈出以下所示的設置對話框:
若是你取消了Enabled勾選,斷點就處於如圖所示的禁用狀態:
2)方法斷點 若是你把斷點下到一個方法前,斷點就會變成這樣:
這個就是方法斷點,通常用來檢查方法的「輸入參數」與「返回值」。
3)變量斷點 有時咱們對程序運行過程並不關心,而只關注某個變量的變化,能夠在變量定義前加一個斷點。
在程序運行過程當中,若是該變量的值發生改變,程序會自動停下來,並定位到變量值改變的地方,供開發者調試。
4)條件斷點 有時會有這樣的場景:把斷點打到循環體的中,咱們只關心特定循環次數下的運行狀況。 好比一個循環10次的循環體,咱們想知道循環到第8次時的運行狀況,若是你不知道 條件斷點的話,你須要一直按「Run to Cursor」直到知足咱們的條件。 若是用條件斷點,當循環體執行到某個條件才停下來,右鍵斷點,輸入如圖所示的等式條件:
而後能夠發現,程序直接跳到i=8的時候才掛起,很是方便。 5)日誌斷點 調試的時候咱們能夠經過打印日誌的方式來定位異常代碼大概位置,以縮小引起問題的範圍,而後再使用斷點精肯定位問題。若是是普通的打印日誌,咱們須要等待從新構建程序,若是用「日誌斷點」 就避免這個無心義的等待。使用日誌斷點很是簡單,右鍵斷點,去掉「Suspend」的勾選,會出現 以下所示的彈窗,勾選「Evaluate and log」在此輸入想輸出的內容。
運行調試後,當執行到日誌斷點的時候能夠看到控制檯輸出了對應的日誌信息,並且程序正常運行,並不會掛起。
若是想查看更詳細的信息,好比斷點的位置和觸發時的堆棧信息,能夠勾選「「Breakpint hit」 message」和「Stacktrace」,勾選後輸出內容會變得更詳細:
6)臨時斷點 所謂的臨時斷點就是:觸發一次後就自動刪除的斷點。設置的方法有兩種:
1.光標移到想打點的行,點擊菜單欄「Run」->「Toggle Temporary Line Breakpoint」, 等價於快捷鍵:「Ctrl+Alt+Shift+F8」 2.更便捷的操做:按住Alt,鼠標點擊左側邊欄。 臨時斷點樣式和普通斷點沒區別,只是點擊右鍵不太同樣,以下圖所示,鼠標點擊後能夠去掉臨時斷點,若是想把臨時斷點變成普通斷點,能夠取消勾選 「Remove once hit」的選項。
7)異常斷點 用於監聽程序異常,一旦程序奔潰,直接定位到異常所在的確切位置。依次點擊: 「Run」->「View Breakpoints」打開斷點視圖。點擊「+」,而後選擇 「Java Exception Breakpoints」,在彈出的窗口中輸入要調試的異常:
除了設置異常斷點外,你在這裏看到項目設置的全部斷點,並進行斷點管理與配置。 另外,你還能夠設置自定義異常斷點,點擊「5.Exception Breakpoints」自行配置便可。
想學習更多Android知識,請加入Android技術開發交流 7520 16839
進羣與大牛們一塊兒討論,還可獲取Android高級架構資料、源碼、筆記、視頻
包括 高級UI、Gradle、RxJava、小程序、Hybrid、移動架構、React Native、性能優化等全面的Android高級實踐技術講解性能優化架構思惟導圖,和BATJ面試題及答案!
羣裏免費分享給有須要的朋友,但願可以幫助一些在這個行業發展迷茫的,或者想系統深刻提高以及困於瓶頸的朋友,在網上博客論壇等地方少花些時間找資料,把有限的時間,真正花在學習上,因此我在這免費分享一些架構資料及給你們。但願在這些資料中都有你須要的內容。
Android高級技術大綱,以及系統進階視頻,及面試題和答案