DDMS介紹


DDMS全稱:Dalvik Debug Monitor Service


一,DDMS的作用

它提供了截屏、查看線程和堆信息、logcat、進程、廣播狀態信息、模擬來電呼叫和短信、虛擬地理坐標等等。 


二,DDMS怎樣工作

1.每一個Android應用都運行在一個Dalvik虛擬機實例里,而每一個虛擬機實例都是一個獨立的進程空間。虛擬機的線程機制,內存分配和管理,Mutex等等都是依賴底層操作系統而實現的。所有Android應用的線程都對應一個Linux線程,虛擬機因而可以更多的 依賴操作系統的線程調度和管理機制。 
2.DDMS在IDE與設備或模擬器之間的起着中間人的角色。 
3.DDMS啟動時會與ADB之間建立一個device monitoring service用於監控設備。當設備斷開或鏈接時,這個service就會通知DDMS。 
4.當一個設備鏈接上時,DDSM和ADB之間又會建立VM monitoring service用於監控設備上的虛擬機。 
5.通過ADB Deamon與設備上的虛擬機的debugger建立鏈接,這樣DDMS就開始與虛擬機對話了。 

三,端口

1.對於設備上每個虛擬機的debugger, DDMS都會開啟一個監聽端口。端口從8600開始。 
2.8700端口 

四,左邊面板

1.左邊顯示了所有當前能找到的所有模擬器或設備列表和每個設備當前正在運行的虛擬機列表。虛擬機是按程序的包命來顯示的。 
2.通過這些列表可以找到運行着想調試的activity的虛擬機。每個虛擬機旁邊的是“debugger pass-through”端口,鏈接到其中一個端口就會鏈接到設備上對應的虛擬機。不管如何,在用DDMS時,只需要鏈接到8700端口,因為DDSM 轉發所有的通信到當前選擇的虛擬機。這樣,就不用在每次切換虛擬機是重新配置debugger端口。 
3.當一個正在運行的程序調用waitForDebugger()函數時,客戶端名字旁邊會顯示一個紅色的icon,知道debugger連上對 應的虛擬機,這是debugger會變成綠色。 
4.如果看到叉icon,着意味着DDMS用於不能打開虛擬機的端口而不能建立debugger與虛擬機建立連接。如果看到所有的虛擬機是這樣, 很可能是有另外一個DDSM實例在運行。 


五,右邊面板

1.info 
這里顯示關於選中的VM的一般的信息,包括進程ID,包名,和虛擬機版本。 
2.Threads 
線程視圖列出了此進程的所有線程。 

ID:虛擬機分配的唯一的線程ID,在Dalvik里,它們是從3開始的奇數。 
Tid:linux的線程ID,For the main thread in a process, this will match the process ID. 
Stauts:線程狀態, 
running:正在執行程序代碼 
sleeping:執行了Thread.sleep() 
monitor:等待接受一個監聽鎖。 
wait:Object.wait() 
native:正在執行native代碼 
vmwait:等待虛擬機 
zombie:線程在垂死的進程 
init:線程在初始化(我們不可能看到) 
starting:線程正在啟動(我們不可能看到) 
utime:執行用戶代碼的累計時間 
stime:執行系統代碼的累計時間 
name:線程的名字 
3.VM Heap 
展示一些堆的狀態,在垃圾回收其間更新。當選定一個虛擬機時, VM Heap視圖不能顯示數據,可以點擊右邊面包上的帶有綠色的”Show heap updates”按鈕,然后在點擊”Cause GC “實施垃圾回收更新堆的狀態。 

4.Allocation Tracker 
在這個視圖里,我們可以跟蹤每個選中的虛擬機的內存分配情況。點擊”Start Tracking”后點擊”Get Allocations “就可以看到。 

我們在利用AS ES 開發Android app 時,難免會遇到有GC 這樣的日志產生,這是內存沒有合理分配的原因;

先點擊start tracking,然后一邊操作界面事件的同時,一邊點擊get alloctions 來收集相關的內存分配信息,然后點擊上方的item,讓數量大小排序,也可以添加filter,從而快速定位到跟你app相關的包名或着類,根據信息,可以快速定位到類中的某一行,然后就是那一行出現GC 異常了,最后解決便是。

5.Emulator Control 

在這里,可以模擬一些設備狀態和行為。 
Telephony Status:改變電話語音和數據方案的狀態,模擬不同的網絡速度。 
TelePhony Actions:發送模擬的電話呼叫和短信到模擬器。 
Location Controls:發送虛擬的定位數據到模擬器里,我們就可以執行定位之類的操作。可以收工的在Manual里輸入經度緯度發送到模擬器,也可以通過 GPX和KML文件。 

六,其他

1.File Explorer 
通過Device > File Explorer 就打開File Explorer。這里可以瀏覽文件,上傳上載刪除文件,當然這是有相應權限限制的。 
2.Screen Capture 
通過Device > Screen Capture 就可以截圖。 
3.Exploring Processes 
通過Device  > Show process status ,這里的信息是通過shell命令”ps -x”輸出的。 
4.Examine Radio State 
通過Device > Dump radio,檢測廣播狀態。 
5.Stop a Virtual Machine 
通過Actions > Halt VM ,停止一個虛擬機。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM