Systrace Android工具内部调用一个名为atrace的工具,它是ftrace或strace (Linux工具)的扩展。
如果我们通过模拟器控制台(ADB shell)连接到Android Jelly Bean,我们可以执行strace工具,但我们不能执行ftrace工具(未安装命令)。
我在网上查了一下,发现strace是ftrace的前身:http://crtags.blogspot.de/2012/04/dtrace-ftrace-ltrace-strace-so-many-to.html 查看Android源代码,我发现最"内部"的参考是Trace.h文件:http://androidxref.com/4.1.1/xref/frameworks/native/include/utils/Trace.h我认为这个文件然后被解析为一个本地Linux驱动程序。
然而,我仍然无法知道这个实现驱动程序是否属于strace或ftrace。"通常",它应该是ftrace,因为它是较新的,但在这种情况下,我不知道为什么我们不能从模拟器运行ftrace。相反,strace完全可以从模拟器中获得。 那么,有没有人知道如果Systrace Android工具使用在非常低的水平strace或ftrace?谢谢!
我遵循这里找到的与ftrace相关的说明:http://www.linuxforu.com/2010/11/kernel-tracing-with-ftrace-part-1/
一切都很完美。我之前无法执行ftrace,因为交互和检索数据是通过逻辑路径完成的。
执行ftrace,在正确配置(许多步骤…)之后,在adb shell中:
root@android:# cat /sys/kernel/debug/tracing/trace > mytracefile.txt
atrace使配置过程更容易,因此我们可以通过以下方式访问跟踪信息:
root@android:# atrace -s -w -t 100 > mytracefile.txt
另一方面,我在这里找到了关于执行strace的信息:http://www.hokstad.com/5-simple-ways-to-troubleshoot-using-strace 所有指示的示例都在我的环境中使用adb shell成功执行。
这两个工具的交互和对结果的访问是非常不同的。
现在我可以说 system Android tool是基于atrace,而atrace又基于ftrace。
strace也支持,但用于其他目的,与 systemace 无关。
认为,