如何在Android中查看进程状态

在Android开发调试过程中,常需要使用ps指令用于获取当前系统进程的快照信息(如果想要获取进程动态信息,则需要使用top命令)。通过ADB SHELL连接上手机后,输入adb shell命令进入shell控制台, 输入ps即可查看当前系统所有进程信息:

ps all process

Android的PS指令在Linux的基础上做了很大的简化,使用ps查看一个进程的信息,大概有两种方式,一个是根据进程全名,一个是根据进程ID。比如,这里要获取Phone进程的信息:

  • 进程名

ps process name

  • 进程ID

ps PID

有关PS指令的具体代码可参考: /android/system/core/toolbox/ps.c

另外,通过ps指令,指定参数-T还可以查看进程内所有线程的状态:

ps threads

上述ps指令输出各个参数有何含义?

FIELD Description
USER 进程持有者名称
PID 进程ID
PPID 父进程ID
VSIZE 进程在虚拟内存所占的空间大小(KB)
RSS 进程实际所使用的物理内存大小(KB)
WCHAN Waiting Channel, 进程等待正在等待的某个事件,如果为空,则表示进程处于运行状态
PC Program Counter, 程序计数器所保存的地址
NAME 进程名

除了列表中的参数之外,输出的参数中还有一列用于表示进程状态,这里看到进程状态是S(sleeping)。通常进程可能有以下几个状态:

缩写代号 进程状态 含义
D TASK_UNINTERRUPTABLE uninterruptible sleeping, cannot be woken up
S TASK_INTERRUPTABLE sleeping, can be woken up
R TASK_RUNNING task currently running
T TASK_STOPPED traced or stopped
Z TASK_ZOMBIE zombie process, terminated and parent not waiting

参考文献