欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android調(diào)試工具DDMS的使用詳解

 更新時間:2013年05月10日 11:47:46   作者:  
本篇文章對android調(diào)試工具DDMS的使用進行了詳細(xì)的分析介紹。需要的朋友參考下

具體可見http://developer.android.com/tools/debugging/ddms.html。 DDMS為IDE和emultor、真正的android設(shè)備架起來了一座橋梁。開發(fā)人員可以通過DDMS看到目標(biāo)機器上運行的進程/現(xiàn)成狀態(tài),可以 android的屏幕到開發(fā)機上,可以看進程的heap信息,可以查看logcat信息,可以查看進程分配內(nèi)存情況,可以像目標(biāo)機發(fā)送短信以及打電話,可 以像android開發(fā)發(fā)送地理位置信息。可以像gdb一樣attach某一個進程調(diào)試。 SDK tools目錄下提供了ddms的完整版,直接運行即可。下面以Eclipse的DDMS perspective為例簡單介紹DDMS的功能。

     跟debug,java的perspective一樣,安裝好adt后會有一個DDMS得perspective,打開即可。

 eclipse中打開ddms

     打開后的窗口為,

DDMS 概覽

device窗口羅列模擬器中所有的進程,右上角那一排按鈕分別為:調(diào)試某個進程,更新某個進程,更新進程堆棧信息,停止某個進程,最后一個圖片按 鈕時抓取android目前的屏幕。

    當(dāng)你選中某個進程,并按下調(diào)試進程按鈕時,如果eclipse中有這個進程的代碼,那就可以進行源代碼級別的調(diào)試。有點像gdb attach。圖片抓取按鈕可以把當(dāng)前android的顯示桌面抓到你的機器上,也是非常有用。

   右邊那個窗口中有threads, heap , file explorer選項卡。分別顯示線程統(tǒng)計信息,棧信息,以及android的文件系統(tǒng)。

file explorer非常有用,他可以把文件上傳到android手機,或者從手機下載下來,也可以進行刪除操作。選中file explorer選項卡后,按下面三個按鈕便可實現(xiàn)對android手機文件系統(tǒng)的上傳,下載,刪除操作。

   emulator control也是非常重要的,通過它可以像手機發(fā)送短信, 打電話,已經(jīng)更新手機位置信息。

總結(jié):

  eclipse adt目前提供的的ddms功能只是真正ddms的一小部分,你 可以直接使用tools下面的ddms來使用所有功能。其中有一個查看進程內(nèi)存分配的功能比較有用。


DDMS全稱:Dalvik Debug Monitor Service
一,DDMS的作用它提供截屏,查看線程和堆的信息,logcat,進程,廣播狀態(tài)信息,模擬來電呼叫和短信,虛擬地理坐標(biāo)等等。 

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

三,端口1,對于設(shè)備上每個虛擬機的debugger, DDMS都會開啟一個監(jiān)聽端口。端口從8600開始。 
2,8700端口 

四,左邊面板1,左邊顯示了所有當(dāng)前能找到的所有模擬器或設(shè)備列表和每個設(shè)備當(dāng)前正在運行的虛擬機列表。虛擬機是按程序的包命來顯示的。 

2,通過這些列表可以找到運行著想調(diào)試的activity的虛擬機。每個虛擬機旁邊的是“debugger pass-through”端口,鏈接到其中一個端口就會鏈接到設(shè)備上對應(yīng)的虛擬機。不管如何,在用DDMS時,只需要鏈接到8700端口,因為DDSM 轉(zhuǎn)發(fā)所有的通信到當(dāng)前選擇的虛擬機。這樣,就不用在每次切換虛擬機是重新配置debugger端口。 

3,當(dāng)一個正在運行的程序調(diào)用waitForDebugger()函數(shù)時,客戶端名字旁邊會顯示一個紅色的icon,知道debugger連上對 應(yīng)的虛擬機,這是debugger會變成綠色。 

4,如果看到叉icon,著意味著DDMS用于不能打開虛擬機的端口而不能建立debugger與虛擬機建立連接。如果看到所有的虛擬機是這樣, 很可能是有另外一個DDSM實例在運行。 
五,右邊面板1,info 
這里顯示關(guān)于選中的VM的一般的信息,包括進程ID,包名,和虛擬機版本。 

2,Threads 
線程視圖列出了此進程的所有線程。 
ID:虛擬機分配的唯一的線程ID,在Dalvik里,它們是從3開始的奇數(shù)。 
Tid:linux的線程ID,For the main thread in a process, this will match the process ID. 
Stauts:線程狀態(tài), 
running:正在執(zhí)行程序代碼 
sleeping:執(zhí)行了Thread.sleep() 
monitor:等待接受一個監(jiān)聽鎖。 
wait:Object.wait() 
native:正在執(zhí)行native代碼 
vmwait:等待虛擬機 
zombie:線程在垂死的進程 
init:線程在初始化(我們不可能看到) 
starting:線程正在啟動(我們不可能看到) 
utime:執(zhí)行用戶代碼的累計時間 
stime:執(zhí)行系統(tǒng)代碼的累計時間 
name:線程的名字 

4,VM Heap 
展示一些堆的狀態(tài),在垃圾回收其間更新。當(dāng)選定一個虛擬機時, VM Heap視圖不能顯示數(shù)據(jù),可以點擊右邊面包上的帶有綠色的”Show heap updates”按鈕,然后在點擊”Cause GC “實施垃圾回收更新堆的狀態(tài)。 

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

7,Emulator Control 
在這里,可以模擬一些設(shè)備狀態(tài)和行為。 
Telephony Status:改變電話語音和數(shù)據(jù)方案的狀態(tài),模擬不同的網(wǎng)絡(luò)速度。 
TelePhony Actions:發(fā)送模擬的電話呼叫和短信到模擬器。 
Location Controls:發(fā)送虛擬的定位數(shù)據(jù)到模擬器里,我們就可以執(zhí)行定位之類的操作??梢允展さ脑贛anual里輸入經(jīng)度緯度發(fā)送到模擬器,也可以通過 GPX和KML文件。 

六,其他1,F(xiàn)ile Explorer 
通過Device > File Explorer 就打開File Explorer。這里可以瀏覽文件,上傳上載刪除文件,當(dāng)然這是有相應(yīng)權(quán)限限制的。 

2,Screen Capture 
通過Device > Screen Capture 就可以截圖。 

3,Exploring Processes 
通過Device  > Show process status ,這里的信息是通過shell命令”ps -x”輸出的。 
4,Examine Radio State 
通過Device > Dump radio,檢測廣播狀態(tài)。 

5,Stop a Virtual Machine 
通過Actions > Halt VM ,停止一個虛擬機。 

相關(guān)文章

最新評論