我们正致力于扩展systrace工具,为我们的设备添加自定义信息。我们特别感兴趣的是知道android如何支持TRACE生成。跟踪事件,zigote,finders,jvm启动,android启动,linux调用,硬件调用等涉及的体系结构和机制是什么。
有人可以帮助我们提供有关此信息的链接或手册吗?
我们将特别感谢adb atrace工具和任何其他相关模块的技术文档。
跟踪文件格式的信息也是我们感兴趣的,我们在哪里可以找到这些跟踪文件,我们如何扩展它们以添加更多信息?
明细:
在 systrace.py 第81行,我们找到:
atrace_args = ['adb','shell','atrace',' - z']
我们知道这会在 / sys / kernel / debug / tracing /
中生成一些跟踪文件我们的主要兴趣是知道这些文件的生成地点,时间和方式?
非常感谢!
答案 0 :(得分:5)
我已经在systrace中做过研究,正如你所提到的那样使用了atrace。 Atrace内部使用ftrace。所以要了解有关ftrace的内核事件。 因此,了解Android框架标签,他们在Android框架中手动添加标签,他们认为这些标签对于跟踪是有用的。
您可以参考这些以获得更好的清晰度
http://androidxref.com/4.1.1/xref/system/extras/atrace/atrace.c
http://androidxref.com/4.1.1/xref/frameworks/native/libs/utils/Trace.cpp
答案 1 :(得分:1)
Grepcode是你的朋友。我认为一个很好的起点是调试类: http://www.grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/os/Debug.java?av=f
有一个有趣的部分描述了调试属性列表:
1085 final String TAG = "DebugProperties";
1086 final String[] files = { "/system/debug.prop", "/debug.prop", "/data/debug.prop" };
必须使用特定注释声明每个属性:
android.os.Debug.DebugProperty
它似乎只适用于平板开发人员。
答案 2 :(得分:1)
我正在处理类似的任务并使用它。它帮助我浏览和理解Java / c ++ /内核级api及其实现方式。
http://www.srcmap.org/p/1/857623b50f7e/Android_Jellybean_systrace__atrace__ftrace_code_study.html