標籤:
1.4 Android調試—調試工具( DDMS)
DDMS 的全稱是Dalvik Debug Monitor Service,它為我們提供了許多有用的服務,例如:可以為裝置截屏;針對特定的進程查看正在啟動並執行線程以及堆資訊;Logcat資訊;廣播狀態資訊;類比撥打電話;接收SMS;虛擬地理座標等等,是我們在開發過程當中十分重要的工具之一。
DDMS 工具存放在Android-sdk/tools/路徑下,直接雙擊ddms.bat運行DDMS,如果是在eclipse中,則通過Window->Open Perspective->Other->DDMS開啟DDMS。
圖1-18 DDMS視窗
DDMS的工作原理:
DDMS搭建起IDE與我們測試終端(模擬器或真機)的連結,它們使用各自獨立的連接埠來監聽調試器的資訊,DDMS可以即時監控測試終端的連結情況。當有新的測試終端連結後,DDMS將捕捉到終端的ID,並通過ADB建立調試器,從而實現發送指令到測試終端的目的。
DDMS是一座橋樑,它為IDE和Emultor(or GPhone)架起來了一座橋樑。開發人員可以通過DDMS看到目標機器上啟動並執行進程/線程狀態;可以讓Eclipse程式串連到開發機上運行;可以看進程的heap資訊、logcat資訊、進程分配記憶體情況;可以像目標機傳送簡訊、發送地理位置資訊以及打電話;可以像gdb一樣attach某一個進程調試。
DDMS介紹:
1)Device選項卡
1-19所示。
圖1-19 Device選項卡
Device中羅列了模擬器或真機中所有的進程,選項卡右上方那一排按鈕分別為:調試進程、更新進程、更新進程堆棧資訊、停止某個進程,最後一個圖片按鈕是抓取Emulator目前的螢幕。當你選中某個進程,並按下調試進程按鈕時,如果eclipse中有這個進程的代碼,那就可以進行原始碼層級的調試。有點像gdb attach。圖片抓取按鈕可以對當前Android裝置的顯示介面進行,也是非常有用的。
2)Threads選項卡
顯示線程統計資訊,1-20所示。
圖1-20 Threads選項卡
3)Heap選項卡
顯示棧資訊,1-21所示。
圖1-21 Heap選項卡
經驗分享: Heap選項卡在做應用的記憶體最佳化的時候,會發揮著重要的作用。具體的,會在後面的章節中仔細說明。 |
4)File Explorer選項卡
顯示檔案資訊,1-22所示。
圖1-22 FileExplorer選項卡
顯示Android裝置或模擬器上的檔案系統資訊。FileExplorer非常有用:它可以把檔案上傳到Android裝置或模擬器;或者從裝置上下載檔案;也可以進行檔案刪除操作。選項卡右上方有上傳、下載、刪除三個按鈕。一般情況下,File Explorer會有如下三個目錄:data、sdcard、system。
data對應手機的RAM,會存放Android OS運行時的Cache等臨時資料(/data/dalvik-cache目錄);沒有root許可權時apk程式安裝在/data/app中(只是存放apk檔案本身);/data/data中存放Emulator或GPhone中所有程式(系統apk+第三方apk)的詳細目錄資訊。
sdcard對應sd卡。
system對應手機的ROM,OS以及系統內建apk程式等存放在這裡。
DDMS監聽第一個終端App進程的連接埠為8600,APP進程將分配8601,如果有更多終端或者更多APP進程將按照這個順序依次類推。DDMS通過8700連接埠(“base port”)接收所有終端的指令。
5)Emulator Control選項卡
類比控制選項卡,1-23所示。
圖1-23 EmulatorControl選項卡
通過它可以類比出向手機傳送簡訊、打電話、更新手機位置資訊。
在Emulator Control\Telephony Actions 中輸入以下內容,1-24所示。
圖1-24 類比傳送簡訊
點擊Send按鈕後,則向Android模擬器傳送簡訊,開啟模擬器,則有一條簡訊通知,點擊開啟後,1-25所示。
圖1-25 接收簡訊
6)Logcat選項卡
可以在程式中,通過使用Log類來向LogCat列印資訊。樣本請見圖1-26。
圖1-26 Logcat選項卡
我們可以通過點擊右上方的“+”按鈕添加Log Filter來過濾來查看Log資訊,例如,我們只想查看“System.out”的日誌資訊,則為我們添加一個filter1-27所示。
圖1-27 添加Log Filter
點擊“OK”按鈕後,則添加了一個Log Filter,裡面顯示的全是System.out列印出來的Log資訊。
第一章 工欲善其事 必先利其器—Android SDK工具(4)