我现在想要一种方法来逐步浏览SDK库(包括C代码和Java代码),以确切地指出正在发生的事情。到目前为止,我已经安装了NDK并启动并运行了GDB。我能够附上这个过程。我尝试过bt
和strace
,但这并没有提供任何有用的信息。
我需要做些什么才能从SDK(以及原生C代码)进入Java代码并逐行浏览代码?
有没有办法可以使用GDB提供更多有用的信息?
答案 0 :(得分:1)
Android是多进程UI框架,不同方通过绑定器进行通信。 作为一名sdk开发人员,如果在提示时将源jar附加到ADT项目,则应该可以进入客户端Java源代码。 如果要调试应用程序的JNI代码,可以使用NDK调试工具。 如果你想要在这些层下面或调试多个进程,它会变得棘手。
请查看Debugging native libs of Android Java apps文章,了解如何进入客户端本机框架库。
如果要调试system_server的Java代码(托管核心框架服务的进程),请查看Debugging Android Java framework services文章。
答案 1 :(得分:0)
我能够部分回答我的问题,不幸的是答案并不容易。
调试Java
要调试Java源代码,您需要获取Android本身的源代码。它位于此处:source.android.com
。有关如何下载源的说明。说明书声称您需要在OSX或Linux上执行这些步骤,尽管可以使用Cygwin。如上所述here,文件不在一个一致的位置。我使用前面提到的页面上提供的python script来生成源代码的zip文件。将Java文件放在一个地方之后,当您进入已编译的Java代码时,您所要做的就是将Eclipse指向这些文件。
调试原生
我仍在研究这个部分,到目前为止我能够使用Cygwin的GDB连接到我的应用程序,但还没有真正进入本机C文件。据推测,库需要以调试模式构建。