###Android 斷點調試和高級調試###

 

轉自:http://www.2cto.com/kf/201506/408358.htmlhtml

有人說Android 的調試是最坑的,那我只能說是你不會用而已,我能夠說Android Studio的調試是我見過最棒的。java


好了開始寫一個簡單的調試程序,咱們先來一個for循環git

 
1
2
3
4
5
6
7
8
<code class = "language-java hljs " > for ( int i = 0 ; i < 10 ; i++) {
//獲取當前i的值
     int selector = i;
     //打log查看當前i的值(此步多餘,實際開發請忽略)
     Logger.e( "for當前的i的值:" + i);
     //調用方法
     stepNext(i);
}</code>

設置斷點(點擊紅點位置添加或取消斷點)github

這裏寫圖片描述

點擊debug模式運行<喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxwPjxpbWcgYWx0PQ=="這裏寫圖片描述" src="/uploadfile/Collfiles/20150616/20150616083835148.png" title="\" />eclipse

查看調試面板函數

這裏寫圖片描述

1、簡單調試


1. step over:一步步往下走

這裏寫圖片描述

當前程序運行的位置,咱們看到i的值已經在程序代碼中展現出來了,黃色的代碼處,這個是AS的功能,對於咱們調試來說,這簡直是很是大的福利了。工具

這裏寫圖片描述

點擊單步調試按鈕或按快捷鍵F8,看看效果。這裏咱們看到selector變量的值已經出來了selector:0,咱們在看看黃色位置i的當前值是0。post

這裏寫圖片描述

這時咱們繼續F8,咱們切換到logcat查看日誌,我打印出的i的值是0,spa

這裏寫圖片描述

咱們在切回道Debugger面板,能夠看到Variables顯示面板中,有i的值是0,selector的值是0。以及咱們能夠看到Frames控制面板中能夠顯示出當前程序的位置在:onCreate():28,第28行。.net

這裏寫圖片描述

2. step into:看到方法往裏走

好比咱們的for循環當中調用了一個stepNext(int i)方法,當咱們走到這裏想看看這個方法裏面的運行過程的時候咱們能夠這樣,當走到這個方法的時候咱們能夠按下F7,或者以下圖的圖標。

這裏寫圖片描述

這時就走到了stepNext方法當中。

這裏寫圖片描述

在這裏打印了一個log,咱們再按一下F8咱們來看看Logcat, 這裏我打印的log都是爲了作教程用,調試咱們就不用打log了直接看顯示面板就OK了

這裏寫圖片描述

3. force step into :全部方法看完整

這個是能夠看到你所調用的全部方法的實現會讓你跟着它走一遍,研究源碼使用很是方便

這裏寫圖片描述

4. step out :有斷點下一個,走完斷點繼續走

這裏若是咱們的一個流程當中,包括調用的方法,若是有斷點走到下一個斷點,若是沒有斷點,而是在一個調用的方法當中,會跳出這個方法,繼續走。

這裏寫圖片描述

這裏理解比較難,舉個例子:
這裏寫圖片描述

(上圖)我如今程序位置在第一個斷點位置(24行),我調用的stepNext方法中也有一個斷點,此時我按下step out按鈕會走到stepNext中的斷點處(39行)我此時若是再按一下step out 會走到stepNext方法的調用出的下一個可執行代碼(30行)

這裏寫圖片描述

(上圖)若是我如今程序位置在stepNext的方法中,若是我此時按下step out,會走到stepNext方法的調用出的下一個可執行代碼(30行)

5. run to Cursor :下個斷點咱們見

這裏的意思就是說,會很快執行到下一個斷點的位置,並且能夠靜如任何調用的方法

這裏寫圖片描述

2、高級調試


1. 跨斷點調試

若是咱們設置了多個斷點,如今咱們須要直接跳轉到下一個斷點,那麼直接點擊下圖就能夠了

這裏寫圖片描述

2.觀察變量

若是咱們想觀察1個或者幾個變量的值的變化,若是咱們在Variables顯示面版中觀察若是我這裏有太多太多的自定義變量和系統變量了,那麼就難觀察了,咱們能夠作以下操做:
點擊Watches,點擊+號,而後輸入變量的名稱回車就OK了,並且會有歷史記錄哦

這裏寫圖片描述

若是變量名比較長咱們能夠這樣:
選擇[Variables]中的變量名而後點擊[右鍵],選擇[Add to Watches],而後Watches面板中就有了

這裏寫圖片描述

3.設置變量的值

在程序中有不少的條件語句和循環語句,調試也是比較耗時的,咱們能夠經過快速設置變量的值來加快調試速度,咱們能夠作以下操做:
選擇[Variables]中的變量名而後點擊[右鍵],選擇[Set Value..]或者選擇以後直接F2(如上圖)(下圖爲Variables面板)

這裏寫圖片描述

4.查看斷點

這裏寫圖片描述

點擊以後咱們能夠看到全部的斷點,以及位置代碼,也能夠設置一些屬性
這裏寫圖片描述

5.中止調試

要注意的是這裏的[中止調試]不是讓程序中止,而是跳過全部調試
這裏寫圖片描述

到這裏咱們的Android Studio的斷點調試和高級調試就完畢了。


有興趣的童鞋能夠關注個人Blog,個人專欄會持續更新Android Studio 教程,以及2015 I/O大會上的NDK的配置和編譯,我也所有會分享給你們。
而且我收到了CSND 的講師邀請,後期我會把這些Android Studio的使用教程錄製成視頻發佈在CSDN學院。


 
1
2
3
4
5
6
7
8
9
10
11
12
13
<code class = "language-java hljs " > /**
  * --------------
  * 歡迎轉載   |  轉載請註明
  * --------------
  * 若是對你有幫助,請點擊|頂|
  * --------------
  * 請保持謙遜 | 你會走的更遠
  * --------------
  * @author zsl
  */
</code>

 

 

轉自:http://www.cnblogs.com/firstcsharp/p/4333264.html

這段時間一直在使用Intellij IDEA, 今天把調試區工具的使用方法記錄於此。

 

先編譯好要調試的程序。

1.設置斷點

選定要設置斷點的代碼行,在行號的區域後面單擊鼠標左鍵便可。

 

2.開啓調試會話

點擊紅色箭頭指向的小蟲子,開始進入調試。

 

IDE下方出現Debug視圖,紅色的箭頭指向的是如今調試程序停留的代碼行,方法f2()中,程序的第11行。紅色箭頭懸停的區域是程序的方法調用棧區。在這個區域中顯示了程序執行到斷點處所調用過的所用方法,越下面的方法被調用的越早。

 

3.單步調試

3.1 step over

點擊紅色箭頭指向的按鈕,程序向下執行一行(若是當前行有方法調用,這個方法將被執行完畢返回,而後到下一行)

3.2 step into

 

點擊紅色箭頭指向的按鈕,程序向下執行一行。若是該行有自定義方法,則運行進入自定義方法(不會進入官方類庫的方法)。具體步驟以下:

在自定義方法發f1()處設置斷點,執行調試

 

 

點擊

 

3.3 Force step into 

該按鈕在調試的時候能進入任何方法。

3.4 step out

 

若是在調試的時候你進入了一個方法(如f2()),並以爲該方法沒有問題,你就可使用stepout跳出該方法,返回到該方法被調用處的下一行語句。值得注意的是,該方法已執行完畢。

3.5 Drop frame

 

點擊該按鈕後,你將返回到當前方法的調用處(如上圖,程序會回到main()中)從新執行,而且全部上下文變量的值也回到那個時候。只要調用鏈中還有上級方法,能夠跳到其中的任何一個方法。

4. 高級調試

4.1 跨斷點調試

設置多個斷點,開啓調試。

 

想移動到下一個斷點,點擊以下圖:

程序將運行一個斷點到下一個斷點之間須要執行的代碼。若是後面代碼沒有斷點,再次點擊該按鈕將會執行完程序。

4.2 查看斷點

 

點擊箭頭指向的按鈕,能夠查看你曾經設置過的斷點並可設置斷點的一些屬性。

箭頭1指向的是你曾經設置過的斷點,箭頭2能夠設置條件斷點(知足某個條件的時候,暫停程序的執行,如 c==97)。結束調試後,應該在箭頭1處把所設的斷點刪除(選擇要刪除的斷點後,點擊上方的紅色減號)。

 

4.3 設置變量值

 

調試開始後,在紅箭頭指向的區域能夠給指定的變量賦值(鼠標左鍵選擇變量,右鍵彈出菜單選擇setValue...)。這個功能能夠更加快速的檢測你的條件語句和循環語句。

 

alt+f8 debug時選中查看值
f8至關於eclipse的f6跳到下一步
shift+f8至關於eclipse的f8跳到下一個斷點,也至關於eclipse的f7跳出函數
f7至關於eclipse的f5就是進入到代碼
alt+shift+f7這個是強制進入代碼
ctrl+shift+f9 debug運行java類
ctrl+shift+f10正常運行java類
command+f2中止運行

http://www.cnblogs.com/Bowu/p/4026117.html

相關文章
相關標籤/搜索