轉: Android 軟體開發之如何使用Eclipse Debug偵錯工具詳解(七)

來源:互聯網
上載者:User

標籤:

轉自: http://www.uml.org.cn/mobiledev/201110092.asp

 

 

Android 軟體開發之如何使用Eclipse Debug偵錯工具詳解(七)
 

發佈於2011-10-09

 

1.在程式中添加一個斷點

如果所示:在Eclipse中添加了一個程式斷點

在Eclipse中一共有三種添加斷點的方法

第一種: 在紅框地區右鍵出現菜單後點擊第一項 Toggle Breakpoint 將會在你右鍵代碼的哪一行添加一個程式斷點 (同樣的操作方可取消程式斷點)

第二種: 在紅框地區雙擊滑鼠左鍵將會在你雙擊代碼的哪一行添加一個程式斷點 (同樣的操作方可取消程式斷點)

第三種 :在游標停留的地方使用快速鍵 Ctrl + Shift + B 將會在游標停留的這一行添加一個程式斷點 (同樣的操作方可取消程式斷點)

2.運行Debug 調試 讓程式停留在添加的斷點上

如所示,在紅框內點擊下拉式功能表選中需要調試的項目 則開始運行Debug調試

如果不在下拉表中選直接點擊表示Debug運行預設項目(預設項目為上一次啟動並執行項目)

Debug調試 快速鍵為單擊F11

分析一下如何科學的添加程式斷點, 中我為了加斷點查看產生出來隨機數的值我一共添加了6個程式斷點,綠框表示最為科學的斷點位置 ,紅框表示不科學的位置。 我們分析一下為什麼, 如果switch case 中的程式碼片段過長 或者 case 的數量過多 如果採用紅框的方式來添加程式斷點,程式員須要添加很多程式斷點萬一有疏漏 所以會很難快速定位代碼執行到了那裡 ,如果使用綠框的方式添加程式斷點,程式員只須要在斷點出按 F6 單步跳過這一行代碼就會走進正確的case中方便繼續調試。

Debug調試運行後,程式停在了紅框處,按F6單步跳過 發現隨機數為4 程式停留在了綠框中,程式員可以迅速定位random的值為4

3.程式停留後查看變數的數值

藍框中的內容表示為斷點的入口方法, 就好比你的斷點是從那個方法進來的,學會看這個真的非常重要, 好比我現在明確知道我的一個方法在被調用的時候方法中會出現錯誤,但是這個方法在程式中100個地方都在調用,我可能斷定實在那裡調用的時候出的錯誤,我不可能在100個調用它的地方都加一個斷點,我可以在方法中添加程式斷點 然後在籃框中查看程式是從那個地方走進這個方法的,便可以快速定位問題所在。

綠框中可以查看當前方法中所有變數的值,但是如果變數非常多在這裡看就比較麻煩,可以使用紅框的方法查看。

紅框中可以右鍵變數名點擊咖啡框中的watch 後 在紫框中Expressions 就可以看到變數的數值了。

BreakPoints 中會記錄程式中添加過多少程式斷點。

4分享一些Eclipse中Debug的一些小技巧

watch 過的變數 和我們自己加的程式斷點不會被Eclipse 自動刪除 除非我們手動刪除否則會一直留在紫框中,這些數值會拖慢Eclipse 開發工具,如果過多的話很可能會造成 Eclipse 崩潰(有可能是Eclipse的BUG),讓開發變得非常痛苦,所以雨松MOMO在這裡建議大家在每次Debug調試的時候將紫框中之前 加的程式斷點 和 watch過的變數 全不手動清空,只添加這一次調試須要的斷點就可以了,這樣的話 Eclipse 就不會被這些拖慢進程的東西所導致崩潰。

5.串連真機調試

第一步 開啟自己的手機在設定中選擇應用程式 然後選擇開發 然後選中USB調試。

第二步 用USB線串連手機到電腦,一般情況會自動安裝驅動,如果無法安裝驅動的話 就去下載一個豌豆莢 或者91助手,讓它幫我們手機自動安裝驅動 很方便的。

第三步 驅動安裝成功後會在Device中看到真機(紅框中) 綠框中為android電腦模擬器

運行項目後彈出裝置選擇視窗 第一個為模擬器 第二個紅框內的為我串連電腦的真機 MOTO的裡程碑,選擇完後點擊OK 就可以通過真機來偵錯工具了,簡單吧?是不是很給力呢呵呵。

6.Android 開發中Log資訊的列印

本人做過J2ME 開發 Android開發 iPhone開發 發現J2ME 的模擬器 還有Iphone的模擬器都非常給力速度很很快(模擬器比真機快) 唯獨android的模擬器 是最不給力的 (真機比模擬器快) 實在是慢的不行 串連上真機可以快一點 但是一樣還是慢 尤其是Debug的時候 簡直是太不給力了(發點牢騷大家別介意哦 > - <)所以有時候我在開發Android的時候不到萬不得已我不去Debug 我會使用Log去列印我須要的資料 下面我教大家如何在Andoid下列印Log資訊。希望大家都學會使用log.

public class testActivity extends Activity {  

    /** 

    * 返回一個隨機數 

    * @param botton 

    * @param top 

    * @return 

    */  

    private int UtilRandom(int botton, int top) {  

    return ((Math.abs(new Random().nextInt()) % (top - botton)) + botton);  

    }  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        int a = UtilRandom(0,5);  

        int b = UtilRandom(0,5);  

        int c = UtilRandom(0,5);  

        int d = UtilRandom(0,5);  

        int e = UtilRandom(0,5);  

        Log.v("random", a +"");  

        Log.v("random", b +"");  

        Log.v("random", c +"");  

        Log.v("random", d +"");  

        Log.v("random", e +"");  

        setContentView(R.layout.main);  

    }  

}  

常用的Log有5個:Log.v()Log.d()Log.i() Log.w() Log.e() 。

根據首字母對應VERBOSE,DEBUG,INFO, WARN,ERROR。

以上這些Log系統都會列印出來。

開啟LogCat頁面發現系統列印了很多Log資訊 我們不好定位出剛才自己打的Log,點擊紅框內的“+”符號彈出下方視窗後在Filter Name : 和 by Log Tag: (藍框內)填寫我們剛才打的LOG tag "random"注意這兩項都必需填寫 然後單擊OK後 方可在綠框中看到我們剛才打的random的Log 。怎麼樣還是很簡單的吧 呵呵。

最後附上Eclipse 在開發中使用到的快速鍵很實用噢

轉: Android 軟體開發之如何使用Eclipse Debug偵錯工具詳解(七)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.