我正在开发一个 android 应用程序并在项目中使用密集的 c++ 代码, 首先我把c++源代码放在项目中,使用下面的指南在Android应用程序中拥有Native Debugging的NDK能力。
http://tools.android.com/recent/usingthendkplugin
但在开发的弱点之后,我决定将 Native 代码分离到一个独立的项目中,并在 Android Application 中使用输出 SO。
我的问题是如何调试 SO 库,它是 Android 应用程序中单独项目的结果?
最佳答案
为此使用 nkd-gdb(您的 .so 必须包含在您为应用程序安装的 APK 中,位于特定于应用程序的 .so 文件的正常位置)它是 NDK 的一部分。请参阅 $NDK/docs/NDK-GDB.html
但是,请注意:nkd-gdb 只会在应用程序启动后的某个时间将 GDB 附加到您的 .so。因此,您可能会错过一些断点。我知道有 2 种方法可以在 IDE 插件之外解决该问题:
- 在 .so 的最早入口点放置一个无限循环,然后在设置断点后使用 GDB 跳出该无限循环
- 从 https://android-review.googlesource.com/#/c/48029/ 下载我对 ndk-gdb 的待定更新,它解决了这个问题。 (有人报告说我的修复有问题,所以它还没有被批准用于 AOSP ......但我从来没有重现他们的问题。如果你使用它,请告诉我它是否适合你。)
关于android - 如何从android应用程序调试共享库[单独的项目],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341696/