DDMS查看Threads狀況

有時候程序運行出現死鎖或者信號量卡死是很糾結的問題,單看代碼很難分析定位問題,這時候能夠藉助DDMS來查看threads的運行狀況,一目瞭然。 html

     手機鏈接上USB,確保adb連通,而後啓動Eclipse裏的DDMS,這時候應該手機就正常鏈接上了 linux

         未命名2 

   就如上圖中顯示的,只要鏈接上了就能夠查看某個進程裏的全部線程的活動了; 下面具體解釋下Threads標籤頁裏給出的每一個字段的意思: 函數

ID:   虛擬機分配的惟一的線程ID,在Dalvik裏,它們是從3開始的奇數。 
Tid:linux的線程ID號 
Stauts:線程狀態,比較多,有下面的一些 
             running:  正在執行程序代碼 
             sleeping:執行了Thread.sleep() 
             monitor:等待接受一個監聽鎖。 
             wait::Object.wait(),等待被其餘線程喚醒 
             native:正在執行native代碼, 
             vmwait:等待虛擬機,(這個不是很懂,高手指教,這個狀態在什麼狀況下發生) 
             zombie:線程在垂死的進程 
             init:線程在初始化(咱們不可能看到) 
             starting:線程正在啓動(咱們不可能看到) 
utime:執行用戶代碼的累計時間 
stime:執行系統代碼的累計時間 
name:線程的名字 線程

 

另外,右側每一個Thread選中以後能夠在下面看到Refresh按鈕,這個點了以後,能夠看到線程的函數執行,結合Status能夠知道目前狀況;而出現問題時某個線程通常會變爲monitor狀態,這時候就要特別留意他,並refresh下,檢查他的執行狀況 ,再回頭結合代碼,通常都能找到問題出在什麼地方; htm

相關文章
相關標籤/搜索