【转】android:DDMS查看Threads--不错
原文網址:http://www.cnblogs.com/mybkn/archive/2012/05/27/2520335.html
有時候程序運行出現死鎖或者信號量卡死是很糾結的問題,單看代碼很難分析定位問題,這時候可以借助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下,檢查他的執行情況 ,再回頭結合代碼,一般都能找到問題出在什么地方;
作者:老Zhan?
出處:http://www.cnblogs.com/mybkn/?
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
打開adb shell,直接ps命令
?
如果查看某特定進程,比如《圣火英雄傳》,用grep過濾
?
各列參數意義:
USER?進程當前用戶;
PID?Process ID,進程ID;
PPID?Process Parent ID,進程的父進程ID;
VSIZE?Virtual Size,進程的虛擬內存大小;
RSS?Resident Set Size,實際駐留"在內存中"的內存大小;
WCHAN?休眠進程在內核中的地址;
PC?Program Counter;
NAME?進程名;
?
如果想殺掉進程 kill pid
?
還可以根據進程id,查看進程加載了哪些庫,cat /proc/pid/maps
# cat /proc/9562/maps
7429b000-74cd4000 r-xp 00000000 103:0d 390977 /data/app-lib/com.vega.one-1/libcocos2djs.so
40891000-40892000 rw-p 00005000 103:0c 1501 /system/lib/libGLESv2.so
40347000-4035d000 r-xp 00000000 103:0c 2003 /system/lib/libz.so
?
轉載于:https://www.cnblogs.com/wi100sh/p/4894705.html
總結
以上是生活随笔為你收集整理的【转】android:DDMS查看Threads--不错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python常用类型的内置函数列表
- 下一篇: 夺命雷公狗---无限级分类NO3