1 首先要理清一下什么是system_process
1.1 system_process是我们在DDMS可以看到的名称。设置的地方在ActivityThread.java:
1.1 system_process是我们在DDMS可以看到的名称。设置的地方在ActivityThread.java:
private void attach(boolean system) {
sThreadLocal.set(this);
mSystemThread = system;
if (!system) {
...
} else {
// Don't set application object here -- if the system crashes,
// we can't display an alert, we just want to die die die.
android.ddm.DdmHandleAppName.setAppName("system_process",
UserHandle.myUserId());
...
}
...
}
1.2 system_process不是进程的名称,它是DDM用于区别不同的Java App的标识,对于一般Android程序来说会被设置成包名
1.3 system_process的进程名称是system_server,就是我们通过ps可以看到的
1.4 system_server进程是zygote进程孵化的第一个Java进程
1.5 zygote进程的程序名称叫app_process。
它的代码在frameworks\base\cm

本文详细介绍了如何在Android平台上实现对system_process的开机调试。system_process实际上是system_server进程,由zygote孵化,其启动涉及app_process。调试方法包括一般调试和开机调试。一般调试可在Android启动后通过Eclipse创建对应项目进行;开机调试则需要修改源代码,通过android.os.Debug.waitForDebugger()等待调试器,并利用DDM设置AppName以确保Eclipse能识别并调试。该方法虽需修改源码,但为调试system_process初始化过程提供了可能。
最低0.47元/天 解锁文章
2755

被折叠的 条评论
为什么被折叠?



