android - 如何从android应用程序调试共享库[单独的项目]

标签 android eclipse debugging android-ndk

我正在开发一个 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 插件之外解决该问题:

  1. 在 .so 的最早入口点放置一个无限循环,然后在设置断点后使用 GDB 跳出该无限循环
  2. https://android-review.googlesource.com/#/c/48029/ 下载我对 ndk-gdb 的待定更新,它解决了这个问题。 (有人报告说我的修复有问题,所以它还没有被批准用于 AOSP ......但我从来没有重现他们的问题。如果你使用它,请告诉我它是否适合你。)

关于android - 如何从android应用程序调试共享库[单独的项目],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341696/

相关文章:

android - Google Cloud Translation API 请求缺少有效的 API key

java - 我们可以在同一个类中拥有两个共享偏好的实例吗?

android - 如何将PNG添加到android中的 float 操作按钮

eclipse - Darkest Dark 主题在 Eclipse 中不起作用

java - 将 eclipse 3.7 升级到 4.2 (Juno) 的最简单方法

c# - 如何在 C#/Visual Studio 中调试谓词?

debugging - C++ CLI/TS3 客户端在插件上崩溃

java - 在 Activity 之间传递 'data source'

android - 项目中的 Eclipse 错误,但我找不到它

debugging - 让 GDB 在返回提示符时打印堆栈跟踪