Java 代码的调试,主要依据两个因素,一个是你要调试的进程;一个是调试的类对应的包名路径,同时还要保证你所运行的手机环境和你要调试的代码是匹配的

注意:符合以上两个因素,即使源码编译不过也可以调试。

查看系统进程

系统进程名称是system_server,通过下面的命令可以看到 pid(进程ID)。

1
ps -A |grep system_server


这里 pid=3023,继续用 cat 命令查看此进程的内存映射,看看是否services映射到内存里边。

1
cat /proc/3023/maps |grep services

odex 是 Android 系统对于 dex 的进一步优化,目的是为了提升执行效率。从这个信息便可以确定,我们的 services.jar 确实是跑到这里了,也就是我们的系统服务相关联的代码,可以通过调试 system_server 进程进行跟踪。

调试

首先通过adb连接到设备:

然后在需要调试的地方打断点:

点击调试按钮

选择对应的进程

点击OK开始调试。