使用ltrace分析Android应用程序

时间:2011-08-31 11:42:35

标签: android profiling ltrace

我需要分析android应用程序的动态库调用,并决定使用“ltrace”工具进行配置文件。我将“ltrace”工具合并到android包中,然后成功编译在一起。它与shell程序一样正常,就像通常的linux控制台应用程序一样。

但是,我无法正确分析从“Zygote”进程分叉的android应用程序。我尝试将ltrace附加到“Zygote”进程以跟踪它的子进程,但我只收到SIGCHLD和SIGSTOP信号并异常终止,显示以下错误。

意外指示0xffffffff在0xffff0508

我只是想知道是否有人曾在Android系统上尝试过这种分析。任何简短的评论对我都非常有帮助。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

尝试将ltrace附加到你的Android应用程序的进程后,它是从zygote分叉的。你需要一个为android的仿生libc构建的ltrace,以及一个合理处理线程的ltrace。

有一种方法可以设置一个可调试的Android应用程序来等待java调试器的连接,您可以使用它,连接ltrace,然后连接并断开java调试器以重新启动它。这应该捕获大部分自己的逻辑,但不是整个启动。

IIRC您有时间限制连接并重新开始,否则它可能会自行恢复,以避免触发应用程序无响应的情况。

通过使用java调试器查看发生了什么,然后阅读源代码以了解如何在本机端实现它,您可能会了解更多信息。

答案 1 :(得分:0)

先生。克里斯斯特拉顿的方式将起作用。

LoadLibrary()是另一个破坏jni的点。