Android Systrace工具内部使用的是strace还是ftrace?

7

Systrace Android工具内部调用一个名为atrace的工具,它是ftracestrace(Linux工具)的扩展。

如果我们通过模拟器控制台(ADB shell)连接到Android Jelly Bean,则可以执行strace工具,但我们无法执行ftrace工具(命令未安装)。

通过互联网上的一些研究,我发现straceftrace的前身: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工具在非常低的级别上使用straceftrace

谢谢!

1个回答

7
我按照这里关于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成功执行。

这两个工具的交互和访问结果非常不同。

现在我可以说,systrace Android工具基于atrace,后者又基于ftrace

strace也得到了支持,但是用途不同,与systrace无关。

祝好,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接