android - 使用 ltrace 分析 Android 应用程序

标签 android profiling ltrace

我需要分析 android 应用程序的动态库调用,并决定为此目的使用“ltrace”工具进行分析。我将“ltrace”工具合并到android包中,然后一起编译成功。就像通常的 linux 控制台应用程序一样,它可以很好地与 shell 程序一起工作。

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

意外指令 0xffffffff 在 0xffff0508

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

提前谢谢你。

最佳答案

尝试将 ltrace 附加到你的 android 应用程序的进程,当它从 zygote fork 出来后。您将需要一个为 android 的仿生 libc 构建的 ltrace,以及一个对线程进行合理处理的 ltrace。

有一种方法可以设置可调试的 android 应用程序以等待 java 调试器的连接,您可以使用它,连接 ltrace,然后连接和断开 java 调试器以再次启动它。这应该包含您自己的大部分逻辑,但不是整个启动过程。

IIRC 你有时间限制来连接并让它再次运行,否则它可能会自行恢复以避免触发应用程序未响应的情况。

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

关于android - 使用 ltrace 分析 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7256434/

相关文章:

python - 使用 memory_profiler 分析 Flask 应用程序中的行

ruby-on-rails - 与 Rails 兼容的 Ruby 1.9.3 内存分析工具

linux - ltrace 不适用于某些二进制文件

c - 我如何找到该程序的许可证 key ?

c++ - 如何从 ltrace 获取 C++ 堆分配的虚拟方法名称?

java - android-studio java.lang.NullPointerException onPostExecute应用程序在电话不在模拟器上崩溃

android - 将单个项目对齐到 RecyclerView android 中的中心

android - 在 Android 中看不到 ViewModel 类

c++ - 如何在 Matlab 中分析 MEX 函数

android - 有没有人成功地限制了他们的 WebView 缓存的大小?