Android DDMS

有时候程序运行出现死锁或者信号量卡死是很纠结的问题,单看代码很难分析定位问题,这时候可以借助DDMS来查看threads的运行情况,一目了然。

手机连接上USB,确保adb连通,然后启动Eclipse里的DDMS,这时候应该手机就正常连接上了



   

就如上图中显示的,只要连接上了就可以查看某个进程里的所有线程的活动了; 下面具体解释下Threads标签页里给出的每个字段的意思:

ID:  虚拟机分配的唯一线程ID. 在 Dalvik, 该数字是一个从3开始的奇数

Tid:线程 ID. 进程中主线程的ID, 会同进程的ID相匹配 

Stauts:虚拟机线程状态. 守护进程会附带一个’*’. 状态信息列表如下

running – executing application code  – 正在执行应用程序

sleeping – called Thread.sleep()  – 执行了Thread.sleep() 方法

monitor – waiting to acquire a monitor lock – 在正等待获取一个监听锁

wait – in Object.wait() – 在Object.wait() 方法中

native – executing native code  – 执行了原生代码

vmwait – waiting on a VM resource – 正在等待一个虚拟机资源

zombie – thread is in the process of dying  – 该线程已死

init – thread is initializing (you shouldn’t see this) – 线程正在初始化 (你不会看到这个)

starting – thread is about to start (you shouldn’t see this either) – 线程正在启动中 (这个你也不会看到)

utime:执行用户代码的累计时间, 单位为”jiffies(表示系统启动以来的tick数)” (通常是 10ms). 仅在Linux系统中适用

stime:执行系统代码的累计时间, 单位为”jiffies(表示系统启动以来的tick数)”.

name:线程的名字

“ID” 和 “Name” 在进程启动的时候就会显示. 其余的字段每个一段时间更新一次(默认是4秒钟)

猜你喜欢

转载自wenzongliang.iteye.com/blog/2243635
今日推荐