編輯:關於Android編程
Debug斷點跟蹤調試是軟件開發過程中分析代碼、解決BUG的一個重要手段,不同IDE下的Debug工具的使用有所不同,但提供的調試功能一定是應有盡有。很多程序員的Debug能力都停留在基本的單步執行、斷點跳躍上,殊不知還有很多鮮為人知但非常方便的調試技巧。本文就以Android Studio工具為例,展示一些一般人不知道的Debug調試技巧,掌握這些,你也算是Debug調試大師了。基本使用Debug App有兩種途徑,第一種是直接點擊下圖運行按鈕右側的小蟲狀圖標,運行並調試當前Project,這個我想大家都知道。
Debug App.png
第二種就是調試當前已經處於運行狀態下的App,這也是我們用的更多的一種調試手段,即Attach debugger to Android process。點擊運行按鈕右側第三個按鈕,彈出Choose Process窗口,選擇對應的進程,點擊OK按鈕即可進入調試模式,此時,我們便可以在需要的地方直接下斷點調試代碼了:
Attach debugger to Android process.png
接下來就是常見的調試方法了,在Debug窗口頂部工具欄有一排操作按鈕,比如Step Over(單步執行)、Step Into(進入方法)等,如圖所示:
Debug窗口.png
打斷點和取消斷點最直接的方式就是單擊目標代碼行的行號右側空白處,然後在Debug窗口左側有個斷點浏覽按鈕View Breakpoints,位於停止按鈕下方第一個,可以浏覽Project中的所有斷點,同時可以添加刪除斷點:
View Breakpoints.png
條件斷點
有時候,我們的斷點打在了循環體裡面,但是我們只想看某一特定循環次數下的運行情況,難道要使用Run to Cursor功能不停地跳至下一次斷點直至滿足我們的要求嗎?
循環裡的斷點.png
如果你知道條件斷點的話,一定會悔不當初。條件斷點可以滿足開發人員自己輸入條件,比如fori循環中輸入i == 5即可讓程序直接運行至第六次循環,for each循環中針對list某一元素下的斷點調試。只需要右鍵點擊斷點,在彈出的窗口中輸入Condiction條件,點擊Done按鈕,然後當程序執行到循環體時,會在滿足條件的一次循環中停下來,供我們調試:
條件斷點.png
日志斷點
打印日志也是跟蹤程序分析問題的一個非常有效的手段,但是如果我們的程序已經運行並且處於調試模式,此時如果想打印日志更加直觀的分析代碼,難道還要停止調試、添加Log代碼並重新編譯運行嗎?
如果你知道日志斷點,就不用如此大費周折,費時費力了。還是右鍵點擊斷點,在彈出的窗口中取消勾選Suspeng復選框(即表示程序運行至此斷點時不會停下來供開發者調試),然後勾選Log evaluated expression:,並輸入打印語句即可。這樣,當Debug模式下的程序執行至此,不會停下來,而是在控制台中打印對應信息,如:
日志斷點.png
變量賦值
比如,我們的代碼裡有一個變量,這個變量的值會影響到程序的執行結果。如果我們想觀察這個變量在不同的賦值下程序的執行結果怎麼辦呢?難道要一遍遍的在代碼裡修改變量值,然後重新運行程序嗎?顯然這是非常麻煩的操作。其實,如果利用Debug模式下的變量賦值(Set Value),只需要運行一次,就能達到我們的觀察效果。在使用該變量的代碼處打個斷點,然後在Variables窗口找到對應的變量,修改變量值並執行即可。
Set Value.png
變量觀察
在Variables變量區和Watches觀察區可以查看Debug模式下,程序執行到斷點處的變量值或者對象的各屬性值,但是多多少少查看起來還是有些不方便。其實可以通過彈出窗口的形式查看屬性值,只要將光標定位至斷點代碼行所用到的變量,IDE會自動彈出一個小窗口,如下圖所示,此時,使用對應的快捷鍵或者點擊這個小窗口裡的變量即可彈出變量屬性值窗口,Mac下的快捷鍵位command + F1,如圖所示:
變量觀察01.png
變量觀察02.png
對象求值
在斷點處,如果有變量對象,系統提供了表達式求值功能,針對Variables視圖中的變量對象,我們可以輸入任何計算語句,實時查看表達式計算結果。具體操作為,右鍵Variables視圖中的變量對象,選擇Evaluate Expression,彈出表達式窗口,輸入任何你想要的計算語句,點擊Evaluate計算按鈕,即可顯示Result結果:
Evaluate Expression01.png
Evaluate Expression02.png
方法斷點
通常我們會對方法裡的代碼添加斷點調試,很少對方法本身調試。其實,如果只是為了看到方法的參數和返回結果,我們可以在定義方法的第一行打斷點,直接對方法本身調試,此時斷點的展示圖標樣式也會與眾不同:
方法斷點.png
變量斷點
有時候,我們想知道自定義的變量的何時何地發生了改變,就可以使用變量斷點。變量斷點的圖標樣式也與眾不同,在變量定義行打斷點,開啟Debug模式,在程序執行的過程中,如果該變量的值發生改變,程序會自動停下來,並定位在改變變量值的地方,供開發者調試:
變量斷點.png
異常斷點
程序在執行的過程中可能會出現各種各樣的未知性異常,如果能在發生異常的時候第一時間讓程序停下來,並定位到異常出現的地方,供開發者調試,那當然是極好的。而萬能的Android Studio就提供了這樣的功能。
打開斷點管理器,這裡有兩種方式打開:點擊工具欄菜單Run,選擇View Breakpoints;在Debug窗口直接點擊View Breakpoints圖標。點擊左上角加號按鈕,可以添加各種斷點,包括前文提到的Method Breakpoints和Field Watchpoints斷點,這裡我們選擇Exception Breakpoints異常斷點,在彈出的Enter Exception Class窗口中輸入需要監控的異常類別即可:
Breakpoints.png
Exception Breakpoints.png
歡迎補充
以上便是使用Android Studio工具的開發過程中很是實用但卻少見的Debug調試技巧,當然所有這些操作都可以通過快捷鍵打開,將鼠標光標移到對應圖標處,都會顯示對應快捷鍵組合,大家自行酌情使用。
當然,如果你還有更好的調試技巧,歡迎留言補充,讓我們一起在分享中學習,交流中進步。
Android Studio 掌握這些調試技巧,Debug 能力不能再高啦
Debug斷點跟蹤調試是軟件開發過程中分析代碼、解決BUG的一個重要手段,不同IDE下的Debug工具的使用有所不同,但提供的調試功能一定是應有盡有。很多程序員的Debug能力都停留在基本的單步執行、斷點跳躍上,殊不知還有很多鮮為人知但非常方便的調試技巧。本文就以Android Studio工具為例,展示一些一般人不知道的Debug調試技巧,掌握這些,你也算是Debug調試大師了。
基本使用
Debug App有兩種途徑,第一種是直接點擊下圖運行按鈕右側的小蟲狀圖標,運行並調試當前Project,這個我想大家都知道。
Debug App.png
第二種就是調試當前已經處於運行狀態下的App,這也是我們用的更多的一種調試手段,即Attach debugger to Android process。點擊運行按鈕右側第三個按鈕,彈出Choose Process窗口,選擇對應的進程,點擊OK按鈕即可進入調試模式,此時,我們便可以在需要的地方直接下斷點調試代碼了:
Attach debugger to Android process.png
接下來就是常見的調試方法了,在Debug窗口頂部工具欄有一排操作按鈕,比如Step Over(單步執行)、Step Into(進入方法)等,如圖所示:
Debug窗口.png
打斷點和取消斷點最直接的方式就是單擊目標代碼行的行號右側空白處,然後在Debug窗口左側有個斷點浏覽按鈕View Breakpoints,位於停止按鈕下方第一個,可以浏覽Project中的所有斷點,同時可以添加刪除斷點:
View Breakpoints.png
條件斷點
有時候,我們的斷點打在了循環體裡面,但是我們只想看某一特定循環次數下的運行情況,難道要使用Run to Cursor功能不停地跳至下一次斷點直至滿足我們的要求嗎?
循環裡的斷點.png
如果你知道條件斷點的話,一定會悔不當初。條件斷點可以滿足開發人員自己輸入條件,比如fori循環中輸入i == 5即可讓程序直接運行至第六次循環,for each循環中針對list某一元素下的斷點調試。只需要右鍵點擊斷點,在彈出的窗口中輸入Condiction條件,點擊Done按鈕,然後當程序執行到循環體時,會在滿足條件的一次循環中停下來,供我們調試:
條件斷點.png
日志斷點
打印日志也是跟蹤程序分析問題的一個非常有效的手段,但是如果我們的程序已經運行並且處於調試模式,此時如果想打印日志更加直觀的分析代碼,難道還要停止調試、添加Log代碼並重新編譯運行嗎?
如果你知道日志斷點,就不用如此大費周折,費時費力了。還是右鍵點擊斷點,在彈出的窗口中取消勾選Suspeng復選框(即表示程序運行至此斷點時不會停下來供開發者調試),然後勾選Log evaluated expression:,並輸入打印語句即可。這樣,當Debug模式下的程序執行至此,不會停下來,而是在控制台中打印對應信息,如:
日志斷點.png
變量賦值
比如,我們的代碼裡有一個變量,這個變量的值會影響到程序的執行結果。如果我們想觀察這個變量在不同的賦值下程序的執行結果怎麼辦呢?難道要一遍遍的在代碼裡修改變量值,然後重新運行程序嗎?顯然這是非常麻煩的操作。其實,如果利用Debug模式下的變量賦值(Set Value),只需要運行一次,就能達到我們的觀察效果。在使用該變量的代碼處打個斷點,然後在Variables窗口找到對應的變量,修改變量值並執行即可。
Set Value.png
變量觀察
在Variables變量區和Watches觀察區可以查看Debug模式下,程序執行到斷點處的變量值或者對象的各屬性值,但是多多少少查看起來還是有些不方便。其實可以通過彈出窗口的形式查看屬性值,只要將光標定位至斷點代碼行所用到的變量,IDE會自動彈出一個小窗口,如下圖所示,此時,使用對應的快捷鍵或者點擊這個小窗口裡的變量即可彈出變量屬性值窗口,Mac下的快捷鍵位command + F1,如圖所示:
變量觀察01.png
變量觀察02.png
對象求值
在斷點處,如果有變量對象,系統提供了表達式求值功能,針對Variables視圖中的變量對象,我們可以輸入任何計算語句,實時查看表達式計算結果。具體操作為,右鍵Variables視圖中的變量對象,選擇Evaluate Expression,彈出表達式窗口,輸入任何你想要的計算語句,點擊Evaluate計算按鈕,即可顯示Result結果:
Evaluate Expression01.png
Evaluate Expression02.png
方法斷點
通常我們會對方法裡的代碼添加斷點調試,很少對方法本身調試。其實,如果只是為了看到方法的參數和返回結果,我們可以在定義方法的第一行打斷點,直接對方法本身調試,此時斷點的展示圖標樣式也會與眾不同:
方法斷點.png
變量斷點
有時候,我們想知道自定義的變量的何時何地發生了改變,就可以使用變量斷點。變量斷點的圖標樣式也與眾不同,在變量定義行打斷點,開啟Debug模式,在程序執行的過程中,如果該變量的值發生改變,程序會自動停下來,並定位在改變變量值的地方,供開發者調試:
變量斷點.png
異常斷點
程序在執行的過程中可能會出現各種各樣的未知性異常,如果能在發生異常的時候第一時間讓程序停下來,並定位到異常出現的地方,供開發者調試,那當然是極好的。而萬能的Android Studio就提供了這樣的功能。
打開斷點管理器,這裡有兩種方式打開:點擊工具欄菜單Run,選擇View Breakpoints;在Debug窗口直接點擊View Breakpoints圖標。點擊左上角加號按鈕,可以添加各種斷點,包括前文提到的Method Breakpoints和Field Watchpoints斷點,這裡我們選擇Exception Breakpoints異常斷點,在彈出的Enter Exception Class窗口中輸入需要監控的異常類別即可:
Breakpoints.png
Exception Breakpoints.png
歡迎補充
以上便是使用Android Studio工具的開發過程中很是實用但卻少見的Debug調試技巧,當然所有這些操作都可以通過快捷鍵打開,將鼠標光標移到對應圖標處,都會顯示對應快捷鍵組合,大家自行酌情使用。
當然,如果你還有更好的調試技巧,歡迎留言補充,讓我們一起在分享中學習,交流中進步。
Android Studio 掌握這些調試技巧,Debug 能力不能再高啦
什麼叫創建圖片的副本? 因為我們直接從BitmapFactory取出來的圖片是可讀的,是不可以修改的。 假設用戶想修改這張圖片,一般是先根據原圖在內存中創建和原圖一模一樣
現在的微信推送已為最新版6.2。不知你是否注意到新版本微信中有一個新功能——收錢。微信這款功能能夠及時的幫助大家還款和收款,只要掃一
一.前言本來覺得so easy,真是沒想到,還搞了老半天,搞的我大汗淋漓,要拍桌子摔鍵盤了。本想實現的功能是:通過網易雲音樂/百度音樂/QQ音樂/酷狗音樂中一個API,通
本課程將帶領大家通過自定義控件實現QQ5.0側滑菜單,課程將循序漸進,首先實現最普通的側滑菜單,然後引入屬性動畫與拖動菜單效果相結合,最終實現QQ5.0側滑菜單效果。通過