本節書摘來自異步社群《android 應用案例開發大全(第3版)》一書中的第1章,第1.4節ddms的靈活應用,作者 吳亞峰 , 蘇亞光 , 于複興,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
1.4 ddms的靈活應用
作為一名合格的軟體開發人員,必須要學會怎樣去調試程式。調試是一個程式員最基本的技能,其重要性甚至超過學好一門語言。那麼什麼是調試呢?所謂調試,就是在軟體投入實際使用前,用手工或編譯程式等方法進行測試,修正文法錯誤和邏輯錯誤的過程。這是保證軟體系統正确性的必不可少的步驟。
android為開發人員提供了一個強大的調試工具——ddms,通過ddms可以調試并監控程式的運作,更好地幫助開發人員完成軟體的調試和開發。本節将對ddms的使用進行詳細的講解,幫助讀者提高對軟體整體的把握能力。
1.4.1 初識ddms
一般情況下,在eclipse中安裝了adt插件後,eclipse視窗的右上角會有ddms的選項按鈕圖檔 49,如圖1-36所示。若ddms按鈕圖檔 50是隐藏的,讀者可以通過eclipse視窗界面右上角的圖檔 51(open perstective)按鈕來打開ddms,如圖1-37所示。單擊圖檔 52按鈕即可切換到ddms界面,如圖1-38所示。

說明
該視窗的布局可自行調整,主要包括devices(裝置清單面闆)、emulator control(模拟器控制器面闆)、logcat(日志顯示面闆)、threads(線程監控面闆)、heap(記憶體堆監控面闆)、allocation tracker(對象分布監控面闆)、file explorer(檔案浏覽器面闆)等。
1.4.2 強大的日志管理功能——logcat的使用
檢視日志檔案,可以使程式員完全了解程式的運作狀況,進而進一步優化和修改程式代碼,logcat為開發人員提供了強大的日志管理功能,通過logcat可以檢視模拟器運作的所有狀态,還可以通過過濾器來篩選出自己需要的日志。
打開ddms後單擊logcat頁籤,打開logcat面闆,預設看到的是模拟器所有的日志,如圖1-39所示,其中包括verbose、debug、info、warn、error和assert共6種類别。開發人員可以使用java中的system.out.println()方法來列印輸出,輔助調試程式。運作程式後,列印輸出的内容便顯示在logcat中,如圖1-39所示。
1.4.3 devices的管理
devices頁籤提供了軟體截圖的功能,可以友善地對多個模拟器和模拟器的程序、線程、堆等進行管理,如圖1-42所示。其中devices面闆還可以與其他面闆共同使用,例如threads頁籤、heap頁籤等,進而進行程式線程和堆的管理。
1.devices簡介
首先介紹devices頁籤的基本功能,如圖1-42所示,這裡開啟了兩個android模拟器,從圖中可以看到兩個模拟器都出現在了devices頁籤面闆中,名稱分别為emulator-5554和emulator-5556,通過單擊模拟器的名稱,可以在多個模拟器中進行切換。
截圖功能。在模拟器中運作程式,如需要對軟體運作效果進行抓圖,則可在需要抓圖的界面停留,然後單擊“devices”頁籤右上角的“screen capture”按鈕,顯示截圖對話框。在對話框中可以預覽圖檔,并進行重新整理、圖檔旋轉、儲存、複制等,如圖1-43所示。
結束程序功能。先單擊選中模拟器中要結束的程序,然後單擊“devices”頁籤右上角的“stop process”按鈕,即可強制結束程序。如要結束模拟器中的“com.anroid.music”程序,如圖1-44所示。
在“devices”面闆中,還可對某一程序進行“心電圖”測試。首先選中要測試的程序,單擊“devices”面闆右上角的“star method profiling”按鈕,待程式運作一段時間後,單擊“devices”面闆右上角的“stop method profiling”按鈕,等待一段時間後,自動彈出“心電圖”視窗,如圖1-45所示。
2.devices與threads
上面介紹的隻是“devices”面闆簡單的兩個功能,下面介紹devices面闆與threads面闆共同使用,進行程式線程的管理。一個程式假如開太多的線程即使機器性能再好,也會慢如龜速,是以線程的控制就顯得尤為重要了,線程的檢視方法如下。
(1)選中“devices”面闆中要檢視的程式程序。
(2)單擊“devices”面闆右上角的“update threads”按鈕。
(3)單擊“threads”頁籤,即可檢視該程序的所有線程及線程的運作情況,如圖1-46所示。
3.devices與heap
雖然當下的手機性能越來越好,手機記憶體當然也越來越大,但是程式過多地占用記憶體也是不允許的,這不僅會使程式顯得很慢造成使用者的不滿,而且會造成程式的臃腫,甚至癱掉。作為合格的軟體開發人員,必須嚴格地管理自己程式的記憶體使用情況,在條件允許的情況下,盡量優化程式,用最小的記憶體完美地運作程式。堆的檢視和管理方法如下。
(2)單擊“devices”面闆右上角的“update heap”按鈕。
(3)單擊“heap”頁籤,在該頁籤中單擊“cause gc”按鈕,即可進行程式堆的詳細檢視和管理,如圖1-47所示。
1.4.4 模拟器控制(emulator control)詳解
emulator control顧名思義,即模拟器控制。通過“emulator control”面闆(如圖1-48所示)可以非常容易地使用模拟器模拟真實手機所具備的一些互動功能,如接聽電話、模拟各種不同網絡環境、模拟接收sms消息和發生虛拟的位址坐标用于測試gps相關功能等。
telephony status:通過選項模拟語音品質以及信号連接配接模式。
telephony actions:模拟電話接聽和發送sms到測試終端。
location controls:模拟地理坐标或者模拟動态的路線坐标變化并顯示預設的地理辨別。
模拟地理坐标的三種方式為:manual(手動為終端發送經緯度坐标)、gpx(通過gpx檔案導入序列動态變化地理坐标,進而模拟行進中gps變化的數值)和kml(通過kml檔案導入獨特的地理辨別,并以動态形式根據變化的地理坐标顯示在測試終端)。
1.4.5 file explorer——sd card檔案管理器
file explorer是android sdk提供的管理sd card的檔案管理器。通過file explorer可以檢視程式對sd card的使用情況,進而判斷程式是否正确運作,具體步驟如下。
(1)選擇要檢視的模拟器。
(2)單擊file explorer頁籤,如圖1-49所示。從圖1-49中可以看到該管理器很類似于windows的資料總管,可以通過單擊友善地檢視任何檔案。
(3)單擊file explorer頁籤右上角的兩個按鈕,可以友善地進行檔案的導入和導出。