android如果需要跟踪系统调用,可以使用strace命令,
strace -p pid 对于已经启动的程序,通过-p参数可以attach上去跟踪之后的执行流程
如果要获取应用打开时的相关strace,可以使用 strace -f -p <pid_of_zygote>命令,
这个命令打印出进程的子进程的strace,所以对于应用,传人zygote进程id即可,因为应用是从zygote fork出来的,但是由于现在android上有zygote和zygote64,需要查看下应用进程的父进程是zygote还是zygote64,
以chrome为例,打开chrome,查看其进程,
ps -ef|grep chrom
u0_a300 11827 1246 1 19:27:30 ? 00:00:03 com.android.chrome
u0_a300 13334 1246 0 19:28:18 ? 00:00:00 com.android.chrome_zygote
可以看到其父进程是1246,
再看看zygote的进程号,
root 1245 1 0 06:31:36 ? 00:01:07 zygote64
root 1246 1 0 06:31:36 ? 00:00:22 zygote
webview_zygote 3795 1246 0 06:32:44 ? 00:00:02 webview_zygote
可以看出,chrome是由zygote fork出来的,
关闭掉chrome,
执行strace -f -p 1246
就可以获取之后由zygote fork出的进程的strace
再打开chrome,获取其PID,从打印的数据中根据PID进行筛选就可以得到chrome的相关数据。
参考资料: