DDMS查看Threads情況
有時候程序運行出現死鎖或者信號量卡死是很糾結的問題,單看代碼很難分析定位問題,這時候可以借助DDMS來查看threads的運行情況,一目了然。
手機連接上USB,確保adb連通,然後啟動Eclipse裏的DDMS,這時候應該手機就正常連接上了
就如上圖中顯示的,隻要連接上了就可以查看某個進程裏的所有線程的活動了; 下麵具體解釋下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下,檢查他的執行情況 ,再回頭結合代碼,一般都能找到問題出在什麼地方;
最後更新:2017-04-03 05:40:13