Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Studio調試技巧

Android Studio調試技巧

編輯:關於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 能力不能再高啦

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved