Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發環境 >> 談使用Eclipse與DDMS調試Android程序的方法

談使用Eclipse與DDMS調試Android程序的方法

編輯:Android開發環境

       在Eclipse開發工具中調試程序的方法很多,但是使用Eclipse調試Android程序時需要注意一些細節上的問題。許多剛接觸 Android的開發者,在調試Android程序時總是不能迅速地找到程序的錯誤所在,Eclipse+ADT的開發環境中沒有直接跟蹤對象內容的方法,但是我們可以使用Google提供的ADT插件DDMS(Dalvik Debug Monitor Service)在Eclipse上輕松地調試Android程序。

        DDMS為我們提供了很多功能,例如:測試設備截屏,針對特定的進程查看正在運行的線程以及堆信息,Logcat,廣播狀態信息,模擬電話呼叫,接收SMS,虛擬地理坐標等等,下面我們通過DDMS來調試我們的Hello Android項目。

       (1)將Eclipse開發工具的工作界面切換到DDMS標簽。首先確定Eclipse開發工具右上角是否有“DDMS”標簽,如果有,則直接點擊該標簽即可切換到DDMS工作界面,如下圖所示。

談使用Eclipse與DDMS調試Android程序的方法

       如果沒有,則點擊'Open Perspective'按鈕,選擇'Other...'命令按鈕,打開'Open Perspective'對話框,如下圖所示。

談使用Eclipse與DDMS調試Android程序的方法

       在'Open Perspective'對話框中選擇'DDMS'選項,然後點擊'確定'按鈕,如下圖所示。  

談使用Eclipse與DDMS調試Android程序的方法

       (2) 在 'DDMS'界面中選擇'Devices'標簽,查看其菜單的功能,我們可以看到Debug Process(調試進程)、Update Threads(更新線程)、Update Heap(更新堆)、Cause GC(引起垃圾回收)、Stop Process(停止進程)、Screen Capture(屏幕截圖)、Reset adb(重啟Android Debug Bridge)菜單選項,如下圖所示。

談使用Eclipse與DDMS調試Android程序的方法

       (3) 從上圖中可以觀察到Android程序運行時的各種狀態,比如進程信息、線程分析、堆內存的占用,結束一個進等程。當然,這些操作都是在DDMS框架下進行的,日常開發的程序是無法執行調用的。如果adb調試橋運行不穩定,可以選擇'reset adb'來重新啟動'adb.exe'進程。下面我們介紹如何使用DDMS的'Logcat'來調試Android程序。

       'Logcat' 通過'android.util.Log'類的靜態方法來查找錯誤和打印系統日志消息。它是一個進行日志輸出的API,我們在Android 程序中可以隨時為某一個對象插入一個Log,然後在DDMS中觀察Logcat的輸出是否正常。android.util.Log常用的方法有以下5個:

       Log.v(String tag, String msg);

       Log.d(String tag, String msg);

       Log.i(String tag, String msg);

       Log.w(String tag, String msg);

       Log.e(String tag, String msg);

       這5種方法的首字母分別對應VERBOSE、DEBUG、INFO、WARN、ERROR。當利用DDMS進行調試時,它們的區別並不大,只是顯示的顏色不同,我們可以控制要顯示的某一類錯誤,一般我們如果使用'斷點'方式來調試程序,則使用Log.e比較合適。但是根據規范建議Log.v,Log.d信息應當只存在於開發過程中,最終版本只可以包含Log.i, Log.w,Log.e這三種日志信息。下面我們對'HelloAndroid'程序進行調試,首先修改'HelloAndroid.java'如下面代碼所示。我們在代碼中加入了需要輸出的日志信息。

        代碼:HelloAndroid.java

Java代碼
  1. package com.yarin.Android.HelloAndroid;      
  2.      
  3. import android.app.Activity;      
  4. import android.os.Bundle;      
  5.      
  6. import android.util.Log;      
  7.      
  8. public class HelloAndroid extends Activity      
  9. {      
  10.           
  11.     private static final String TAG = 'HelloAndroid';      
  12.           
  13.     public void onCreate(Bundle savedInstanceState)      
  14.     {      
  15.         super.onCreate(savedInstanceState);      
  16.               
  17.         Log.v(TAG,'VERBOSE');      
  18.         Log.d(TAG,'DEBUG');      
  19.         Log.i(TAG,'INFO');      
  20.         Log.w(TAG,'WARN');      
  21.         Log.e(TAG,'ERROR');      
  22.         setContentView(R.layout.main);      
  23.     }      
  24. }    

       同樣我們以前常用的System.out.println();的結果也會輸出在這裡而不是顯示在傳統的控制台中。另外在DDMS視圖中devices中可以通過“Screen Capture”圖標(一個相機圖標)可以截出當前android虛擬機的屏幕。

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