微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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在我的环境中成功执行了所有指示的示例.

两种工具的结果的交互和访问是非常不同的.

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

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

问候,

原文地址:https://www.jb51.cc/android/315950.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐