0

我现在想要一种方法来逐步浏览 SDK 库(包括 C 和 Java 代码)以准确定位正在发生的事情。到目前为止,我已经安装了 NDK 并启动并运行了 GDB。我能够附加到这个过程。我试过了btstrace但这并没有提供任何有用的信息。

  1. 我需要做些什么才能从 SDK 进入 Java 代码(以及本机 C 代码,如果涉及)并逐行浏览代码?

  2. 有没有办法可以使用 GDB 提供更多有用的信息?

4

2 回答 2

1

Android 是多进程 UI 框架,不同的各方通过 binder 进行通信。作为 sdk 开发人员,如果在出现提示时将源 jar 附加到 ADT 项目,您应该能够进入客户端 Java 源。如果要调试应用的 JNI 代码,可以使用 NDK 调试工具。如果你想深入这些层或调试多个进程,那就很棘手了。

请查看调试 Android Java 应用程序的原生库文章以了解如何进入客户端原生框架库。

如果要调试 system_server(承载核心框架服务的进程)的 Java 代码,请查看调试 Android Java 框架服务一文。

于 2014-07-16T13:38:48.333 回答
0

我已经能够部分回答我的问题,不幸的是,答案并不容易。

调试 Java

要调试 Java 源代码,您需要获取 Android 本身的源代码。位于此处:source.android.com. 那里提供了有关如何下载源代码的说明。说明声称您需要在 OSX 或 Linux 上执行这些步骤,尽管可能使用 Cygwin。如此处所述,这些文件不在一个一致的位置。我使用前面提到的页面上提供的python 脚本来生成源的 zip 文件。将 Java 文件放在一个位置后,您所要做的就是在进入编译后的 Java 代码时将 Eclipse 指向这些文件。

调试本机

我仍在这部分工作,到目前为止,我能够使用 Cygwin 的 GDB 连接到我的应用程序,但还没有真正进入本机 C 文件。据推测,这些库需要在调试模式下构建。

于 2013-03-09T13:58:30.400 回答