Debug斷點跟蹤調試是軟件開發過程當中分析代碼、解決BUG的一個重要手段,不一樣IDE下的Debug工具的使用有所不一樣,但提供的調試功能必定是應有盡有。不少程序員的Debug能力都停留在基本的單步執行、斷點跳躍上,卻不知還有不少不爲人知但很是方便的調試技巧。本文就以Android Studio工具爲例,展現一些通常人不知道的Debug調試技巧,掌握這些,你也算是Debug調試大師了。程序員
Debug App有兩種途徑,第一種是直接點擊下圖運行按鈕右側的小蟲狀圖標,運行並調試當前Project,這個我想你們都知道。express
第二種就是調試當前已經處於運行狀態下的App,這也是咱們用的更多的一種調試手段,即Attach debugger to Android process
。點擊運行按鈕右側第三個按鈕,彈出Choose Process
窗口,選擇對應的進程,點擊OK按鈕便可進入調試模式,此時,咱們即可以在須要的地方直接下斷點調試代碼了:微信
接下來就是常見的調試方法了,在Debug窗口頂部工具欄有一排操做按鈕,好比Step Over
(單步執行)、Step Into
(進入方法)等,如圖所示:工具
打斷點和取消斷點最直接的方式就是單擊目標代碼行的行號右側空白處,而後在Debug窗口左側有個斷點瀏覽按鈕View Breakpoints
,位於中止按鈕下方第一個,能夠瀏覽Project中的全部斷點,同時能夠添加刪除斷點:學習
有時候,咱們的斷點打在了循環體裏面,可是咱們只想看某一特定循環次數下的運行狀況,難道要使用Run to Cursor
功能不停地跳至下一次斷點直至知足咱們的要求嗎?lua
若是你知道條件斷點的話,必定會悔不當初。條件斷點能夠知足開發人員本身輸入條件,好比fori
循環中輸入i == 5
便可讓程序直接運行至第六次循環,for each
循環中針對list某一元素下的斷點調試。只須要右鍵點擊斷點,在彈出的窗口中輸入Condiction條件,點擊Done
按鈕,而後當程序執行到循環體時,會在知足條件的一次循環中停下來,供咱們調試:debug
打印日誌也是跟蹤程序分析問題的一個很是有效的手段,可是若是咱們的程序已經運行而且處於調試模式,此時若是想打印日誌更加直觀的分析代碼,難道還要中止調試、添加Log代碼並從新編譯運行嗎?3d
若是你知道日誌斷點,就不用如此大費周折,費時費力了。仍是右鍵點擊斷點,在彈出的窗口中取消勾選Suspeng
複選框(即表示程序運行至此斷點時不會停下來供開發者調試),而後勾選Log evaluated expression:
,並輸入打印語句便可。這樣,當Debug模式下的程序執行至此,不會停下來,而是在控制檯中打印對應信息,如:調試
好比,咱們的代碼裏有一個變量,這個變量的值會影響到程序的執行結果。若是咱們想觀察這個變量在不一樣的賦值下程序的執行結果怎麼辦呢?難道要一遍遍的在代碼裏修改變量值,而後從新運行程序嗎?顯然這是很是麻煩的操做。其實,若是利用Debug模式下的變量賦值(Set Value),只須要運行一次,就能達到咱們的觀察效果。在使用該變量的代碼處打個斷點,而後在Variables
窗口找到對應的變量,修改變量值並執行便可。日誌
在Variables
變量區和Watches
觀察區能夠查看Debug模式下,程序執行到斷點處的變量值或者對象的各屬性值,可是多多少少查看起來仍是有些不方便。其實能夠經過彈出窗口的形式查看屬性值,只要將光標定位至斷點代碼行所用到的變量,IDE會自動彈出一個小窗口,以下圖所示,此時,使用對應的快捷鍵或者點擊這個小窗口裏的變量便可彈出變量屬性值窗口,Mac下的快捷鍵位command + F1
,如圖所示:
在斷點處,若是有變量對象,系統提供了表達式求值功能,針對Variables
視圖中的變量對象,咱們能夠輸入任何計算語句,實時查看錶達式計算結果。具體操做爲,右鍵Variables
視圖中的變量對象,選擇Evaluate Expression
,彈出表達式窗口,輸入任何你想要的計算語句,點擊Evaluate
計算按鈕,便可顯示Result結果:
一般咱們會對方法裏的代碼添加斷點調試,不多對方法自己調試。其實,若是隻是爲了看到方法的參數和返回結果,咱們能夠在定義方法的第一行打斷點,直接對方法自己調試,此時斷點的展現圖標樣式也會不同凡響:
有時候,咱們想知道自定義的變量的什麼時候何地發生了改變,就可使用變量斷點。變量斷點的圖標樣式也不同凡響,在變量定義行打斷點,開啓Debug模式,在程序執行的過程當中,若是該變量的值發生改變,程序會自動停下來,並定位在改變變量值的地方,供開發者調試:
程序在執行的過程當中可能會出現各類各樣的未知性異常,若是能在發生異常的時候第一時間讓程序停下來,並定位到異常出現的地方,供開發者調試,那固然是極好的。而萬能的Android Studio就提供了這樣的功能。
打開斷點管理器,這裏有兩種方式打開:點擊工具欄菜單Run
,選擇View Breakpoints
;在Debug窗口直接點擊View Breakpoints
圖標。點擊左上角加號按鈕,能夠添加各類斷點,包括前文提到的Method Breakpoints
和Field Watchpoints
斷點,這裏咱們選擇Exception Breakpoints
異常斷點,在彈出的Enter Exception Class
窗口中輸入須要監控的異常類別便可:
以上即是使用Android Studio工具的開發過程當中非常實用但卻少見的Debug調試技巧,固然全部這些操做均可以經過快捷鍵打開,將鼠標光標移到對應圖標處,都會顯示對應快捷鍵組合,你們自行酌情使用。
固然,若是你還有更好的調試技巧,歡迎留言補充,讓咱們一塊兒在分享中學習,交流中進步。
本文由 亦楓 創做並首發於 亦楓的我的博客 ,同步受權微信公衆號:技術鳥(NiaoTech),歡迎關注。