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

谢谢!

4

1 回答 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的,而 atrace又是基于ftrace的。

strace也受支持,但用于其他目的,与systrace无关。

问候,

于 2013-04-09T14:44:23.110 回答