通过 strace,您可以看到进程发出的系统调用,以及这些系统调用返回的内容。
编译 strace
要构建 strace,请运行以下命令:mmma -j6 external/strace
附加到正在运行的进程
对于 strace,最简单和最常见的用例即是附加到正在运行的进程,方法是使用下面这行命令:
adb shell strace -f -p PID
-f 标记告诉 strace 应附加到相应进程中的所有现有线程,以及之后会产生的所有新线程。
一个典型进程会发出大量系统调用,因此您需要查看 strace 手册页面,了解如何只收集您真正感兴趣的数据。
在应用上使用 strace
要在应用上使用 strace,请执行以下操作:
设置设备,以便您可以运行 strace。您必须启用 root 权限、停用 SELinux,然后重新启动运行时以移除 seccomp 过滤器,否则此过滤器会阻止 strace 运行:
adb root
adb shell setenforce 0
adb shell stop
adb shell start
为 strace 日志设置一个全局可写目录,因为 strace 将在应用的 uid 下运行:
adb shell mkdir -m 777 /data/local/tmp/strace
选择要跟踪的进程并启动该进程:
adb shell setprop wrap.com.android.calendar '"logwrapper strace -f -o /data/local/