Systrace android工具在内部调用一个称为 atrace 的工具,该工具是 ftrace strace 的扩展名(Linux工具)。

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

通过Internet进行一些研究,我发现 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 ,因为交互和检索数据是通过逻辑路径完成的。

要在正确配置(许多步骤...)之后在adb shell中执行 ftrace :

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 无关。

问候,

关于android - Android Systrace工具内部使用strace还是ftrace?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15878632/

10-11 02:28