要想檢查正在啟動並執行應用程式中發生了什麼情況,就需要查看正在啟動並執行 Dalvik VM。在 Eclipse 中,選擇 Window > Open Perspective > Other。在出現的對話方塊中選擇 DDMS。這會在 Eclipse 中開啟一個新的透視圖,其中有許多有趣的視窗。
DDMS 為IDE和Emultor(or GPhone)架起來了一座橋樑。Developer可以通過DDMS看到目標機器上啟動並執行進程/線程狀態:可以讓Eclipse程式串連到開發機上運行;可以看進程的heap資訊、logcat資訊、進程分配記憶體情況;可以像目標機傳送簡訊、發送地理位置資訊以及打電話;可以像gdb一樣attach 某一個進程調試。
下面簡要介紹一下 DDMS 透視圖中提供的資源:
1. Devices
Device 中羅列了Emulator中所有的進程,選項卡右上方那一排按鈕分別為:Debug the selected process調試進程、Update Heap更新進程堆棧資訊、Dump HPROF file檢查HPROF(Heap/CPU Profiling Tool)檔案、Cause GC調用記憶體回收、更新進程Update Threads、Start Method Profiling開始方法分析、Stop Process停止某個進程,和Screen Capture抓取 Emulator目前的螢幕。當你選中某個進程,並按下調試進程按鈕時,如果eclipse中有這個進程的代碼,那就可以進行原始碼層級的調試。有點像 gdb attach。圖片抓取按鈕可以把當前android的顯示案頭抓到你的機器上,也是非常有用。
這裡可以查看到所有與DDMS連 接的終端的詳細資料,以及每個終端正在啟動並執行APP進程,每個進程最右邊相對應的是與調試器連結的連接埠。因為Android是基於Linux核心開發的操 作平台,同時也保留了Linux中特有的進程ID,它介於進程名和連接埠號碼之間。
DDMS監聽第一個終端App進程的連接埠為8600,APP進程將分配8601,如果有更多終端或者更多APP進程將按照這個順序依次類推。DDMS通過8700連接埠(”base port”)接收所有終端的指令。
2. Emulator Control
通過這個面板的一些功能可以非常容易的使測試終端類比真實手機所具備的一些互動功能,比如:電話中,根據選項類比各種不同網路情況,類比接受SMS訊息和發送虛擬位址座標用於測試GPS功能等。
Telephony Status: 通過選項類比語音品質以及訊號串連模式。
Telephony Actions: 類比電話接聽和發送SMS到測試終端。
Location Control: 類比地理座標或者類比動態路線座標變化並顯示預設的地理標識,可以通過以下3種方式:
· Manual: 手動為終端發送二維經緯座標。
· GPX: 通過GPX檔案匯入序列動態變化地理座標,從而類比行進中GPS變化的數值。
· KML: 通過KML檔案匯入獨特的地理標識,並以動態形式根據變化的地理座標顯示在測試終端。
如:在Emulator Control/Telephony Actions 中輸入如內容“Android 中文”,單擊發送後,在Android模擬器中開啟Messaging,看到下面的簡訊:
3. 檔案管理工具
顯示檔案系統資訊。File Explorer非常有用:它可以把檔案上傳到Android、或者從Android上下載檔案下來、也可以進行檔案刪除操作。選項卡右上方有上傳、下載、刪除三個按鈕。一般情況下,File Explorer會有如下三個目錄:data、sdcard、system。
· data對應手機的RAM,會存放Android OS 運行時的Cache等臨時資料(/data/dalvik-cache目錄);沒有root許可權時apk程式安裝在/data/app中(只是存放apk 檔案本身);/data/data中存放Android中所有程式(系統apk+第三方apk)的詳細目錄資訊。
· mnt是mount,掛裝的意思,mnt目錄下的 sdcard對應sd卡。
· system對應手機的ROM,OS以及系統內建apk程式等存放在這裡。
使用者應用程式部署在 /data/app 目錄中,而 Android 內建的應用程式部署在 /system/app 目錄中。
4. Threads、Heap、Allocation Tracker
Threads視圖列出當前進程的所有線程。
Heap視圖展示一些堆的狀態,在記憶體回收其間更新。當選定一個虛擬機器時, VM Heap視圖不能顯示資料,可以點擊右邊麵包上的帶有綠色的”Show heap updates”按鈕,然後在點擊”Cause GC “實施記憶體回收更新堆的狀態。
在Allocation Tracker視圖裡,我們可以跟蹤每個選中的虛擬機器的記憶體配置情況。點擊”Start Tracking”後點擊”Get Allocations “就可以看到。
例如,為了查看Garbage Collection資訊:點擊 [Start Tracking]按鈕 -> 保持程式運行一段時間後 ->點擊[Get Allocations] 按鈕,憑藉得到的Allocations資訊可以通過Line Number準確找到哪裡的代碼出現了問題。
5. LogCat
LogCat 是一個記錄檔,它記錄 VM 中發生的活動。應用程式可以通過 Log.i(tag,message); 在這個記錄檔中添加自己的日誌項,其中的 tag 和 message 都是 Java 字串。Log 類屬於android.util.Log 包。
6. Console
Android輸出的資訊,載入程式等資訊。
注意:
在偵錯工具時,我一般不使用DDM中logcat來查看資訊的輸出~~,一般用sdk中tools中的adb logcat命令來調出資訊的輸出。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/deaboway/archive/2011/02/15/6186818.aspx