編輯: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工作界面,如下圖所示。
如果沒有,則點擊'Open Perspective'按鈕,選擇'Other...'命令按鈕,打開'Open Perspective'對話框,如下圖所示。
在'Open Perspective'對話框中選擇'DDMS'選項,然後點擊'確定'按鈕,如下圖所示。
(2) 在 'DDMS'界面中選擇'Devices'標簽,查看其菜單的功能,我們可以看到Debug Process(調試進程)、Update Threads(更新線程)、Update Heap(更新堆)、Cause GC(引起垃圾回收)、Stop Process(停止進程)、Screen Capture(屏幕截圖)、Reset adb(重啟Android Debug Bridge)菜單選項,如下圖所示。
(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代碼同樣我們以前常用的System.out.println();的結果也會輸出在這裡而不是顯示在傳統的控制台中。另外在DDMS視圖中devices中可以通過“Screen Capture”圖標(一個相機圖標)可以截出當前android虛擬機的屏幕。