我的Android应用程序如何在启用开发人员选项的手机上获得另一个进程/应用程序的方法跟踪



我想写一个Android应用程序(不是PC程序),具有Android设备监视器(ADM)的子集功能,即。选择一个进程并跟踪其方法调用,并提供详细信息(ADM可以获得的所有信息,如堆栈跟踪和时间),而手机没有连接到任何计算机,也没有任何网络访问。

我已经搜索到android.os.Debug.startMethodTracing*,但似乎只能跟踪当前进程,结果只能写入文件(我需要内存中的信息)。

挖掘它的实现,我找到了dalvik.system.VMDebug.startMethodTracing*,但它似乎不能被应用程序使用,我也没有找到指定pid s的方法。看起来像是在调用JNI函数,但是我没有找到实现。

也许我可以通过使用Linux的性能事件(perf_event_open(2))以较低的方式获得信息。但在这样做之前,我想知道这种功能是否可以在Java中实现(也许通过与一些"系统管理器"进程或"调试服务器"进程交谈,或者通过调用一些CLI工具然后获得其标准输出)?

这些功能只能由shell用户(adb运行的用户)访问,当然也可以由root用户访问。按照设计,正常的android应用程序不能访问这些功能,因为这将完全破坏作为android应用程序安全模型基础的应用程序沙箱。

相关内容

最新更新