Android Binder 跟踪

Posted

技术标签:

【中文标题】Android Binder 跟踪【英文标题】:Android Binder Tracing 【发布时间】:2016-04-06 16:58:06 【问题描述】:

android OS 源代码(路径:/drivers/staging/android/binder_trace.h)中,我们有一个名为 binder_trace.h 的文件,并且在 /drivers/staging/android/binder.c 中也包含了 binder_trace。正如我们在binder_trace.h 文件中看到的,binder 事务使用TP_printk 指令进行跟踪。

现在我的问题是如何使用 adb shell 在手机中查看这些内核日志?在/sys/kernel/debug/tracing 目录中也没有任何与活页夹跟踪相关的文件!

【问题讨论】:

【参考方案1】:
$ cd /sys/kernel/debug/tracing
$ echo > set_event  # clear all unrelated events
$ echo 1 > events/binder/enable
$ echo 1 > tracing_on

# .. do your test jobs ..

$ cat trace

请参阅https://android.googlesource.com/kernel/common/+/android-3.10.y/Documentation/trace/ftrace.txt 了解更多详细信息。

【讨论】:

该链接不再有效。这是一个更新的链接:android.googlesource.com/kernel/common/+/android-3.18/…【参考方案2】:

要查看内核日志,请使用 dmesg 命令:

adb shell
# dmesg

【讨论】:

所以它应该在 debugfs 中。尝试 mount 命令以查看它是否已安装以及安装在何处。应该在 /sys/kernel/debug/tracing 中。对文件“trace”使用 cat 命令 我提到“/sys/kernel/debug/tracing 目录下没有任何与 binder tracking 相关的文件!” 是的。我看到应该有一个名为“trace”的文件,还有一个名为“current_tracer”和“available_traces”的文件。使用 cat 命令读取该文件并使用 echo 进行设置。您应该在跟踪文件的输出中看到活页夹跟踪 我监控了跟踪文件,但不幸的是没有任何活页夹跟踪! available_trace 文件的输出是什么?

以上是关于Android Binder 跟踪的主要内容,如果未能解决你的问题,请参考以下文章

Binder 机制分析 Android 内核源码中的 Binder 驱动源码 binder.c ( googlesource 中的 Android 内核源码 | 内核源码下载 )

Android面试Android跨进程通信之Binder

Android Binder原理学习Binder前必须要了解的知识点

Android Binder实现浅析-Binder驱动

Android binder介绍

Android Binder解析