android調試工具DDMS的使用詳解

來源:互聯網
上載者:User

具體可見http://developer.android.com/tools/debugging/ddms.html。 DDMS為IDE和emultor、真正的android裝置架起來了一座橋樑。開發人員可以通過DDMS看到目標機器上啟動並執行進程/現成狀態,可以 android的螢幕到開發機上,可以看進程的heap資訊,可以查看logcat資訊,可以查看進程分配記憶體情況,可以像目標機傳送簡訊以及打電話,可 以像android開發發送地理位置資訊。可以像gdb一樣attach某一個進程調試。 SDK tools目錄下提供了ddms的完整版,直接運行即可。下面以Eclipse的DDMS perspective為例簡單介紹DDMS的功能。

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

開啟後的視窗為,

device視窗羅列模擬器中所有的進程,右上方那一排按鈕分別為:調試某個進程,更新某個進程,更新進程堆棧資訊,停止某個進程,最後一個圖片按 鈕時抓取android目前的螢幕。

當你選中某個進程,並按下調試進程按鈕時,如果eclipse中有這個進程的代碼,那就可以進行原始碼層級的調試。有點像gdb attach。圖片抓取按鈕可以把當前android的顯示案頭抓到你的機器上,也是非常有用。

右邊那個視窗中有threads, heap , file explorer選項卡。分別顯示線程統計資訊,棧資訊,以及android的檔案系統。

file explorer非常有用,他可以把檔案上傳到android手機,或者從手機下載下來,也可以進行刪除操作。選中file explorer選項卡後,按下面三個按鈕便可實現對android手機檔案系統的上傳,下載,刪除操作。

emulator control也是非常重要的,通過它可以像手機傳送簡訊, 打電話,已經更新手機位置資訊。

總結:

eclipse adt目前提供的的ddms功能只是真正ddms的一小部分,你 可以直接使用tools下面的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:線程的名字

4,VM Heap
展示一些堆的狀態,在記憶體回收其間更新。當選定一個虛擬機器時, VM Heap視圖不能顯示資料,可以點擊右邊麵包上的帶有綠色的”Show heap updates”按鈕,然後在點擊”Cause GC “實施記憶體回收更新堆的狀態。

6,Allocation Tracker
在這個視圖裡,我們可以跟蹤每個選中的虛擬機器的記憶體配置情況。點擊”Start Tracking”後點擊”Get Allocations “就可以看到。

7,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 ,停止一個虛擬機器。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.