【问题标题】:Cannot debug android native code built on android library on eclipse无法在 Eclipse 上调试基于 android 库构建的 android 本机代码
【发布时间】:2014-05-27 11:10:31
【问题描述】:


我已经为此苦苦挣扎了 3 天,但我无法完成。
我有一个 android 项目,它在 eclipse 上链接到一个包含本机代码的 android 库。
我看到了this question,它和我的架构相同,但是那里提出的步骤不起作用。

我这里重写了步骤,分别是:

  1. 转到“运行”菜单->“调试配置”
  2. 在左侧窗格的“Android 原生应用程序”下,选择您的应用程序
  3. 在“调试器”选项卡下,单击“共享库”部分中的“添加...”。
  4. 浏览到您的 android 库项目目录并添加其子目录 obj/local/armeabi。
  5. 应用和调试。

第一个问题是,如果应用程序未设置为原生应用程序(仅链接到原生应用程序),我无法为原生应用程序设置调试配置,因此我无法选择任何要调试的项目。

我尝试使用虚拟 jni/Android.mk 将 android 应用程序项目设置为具有 c/c++ 特性,因为在构建时没有显示任何错误。 (不过,我怀疑这是正确的方法)
然后应用程序运行并正确链接,我可以按照这些步骤--1 到 5 进行操作。但是当我调试它时,控制台会显示(BasicCharacterWithLib 是应用程序的名称):

[2014-05-27 12:18:09 - BasicCharacterWithLib] Error while obtaining file from device
[2014-05-27 12:18:09 - BasicCharacterWithLib] com.android.ddmlib.SyncException: Writing local file failed!

而且它永远不会在任何断点处停止(原生或非原生)

我也知道this other question,在不同的配置(直接执行应用程序)上具有相同的症状,但仍未得到答复。

我已经成功调试了同一设备中的另一个应用程序,一个测试应用程序,其中包含本机代码,所以我猜这个问题不可能是由于设备配置造成的。

你知道怎么解决吗?

更多细节:

  • 我使用来自 adt bundle 的 eclipse(版本 v22.6.2,可用的 sdk 最高 api 级别为 19,ndk 版本为 r9)
  • 应用程序在多个线程上运行(通过 AsyncTask 从 java 执行),但此时仅启动主线程。
  • 如果我将其作为 android 应用程序进行调试,即使在多线程中,调试过程也只能在 java 端工作。
  • 我在 Application.mk 中将 APP_PLATFORM 设置为 android-14,与 manifest 中的 minSdkVersion="14" 相同。
  • 我也试过重启 eclipse,重启设备,然后拔掉再插入 USB。

【问题讨论】:

  • 我发现“共享库”下的“添加”按钮没有添加所需的斜杠。您可以深入研究 Eclipse 设置文件并编辑该值,但确保您设置了一个调用 set solib-search-path 的 gdb 命令文件会更容易一些。我的经验是,不设置搜索路径不应该导致您看到的错误输出。

标签: android debugging android-ndk android-library


【解决方案1】:

看到这个question。可能与磁盘上不存在 obj/local/armeabi 文件夹的问题相同。

【讨论】:

  • 恐怕与我的问题无关。如果我将库更改为应用程序本身,我可以调试它。问题是,这是一个 android 库
猜你喜欢
  • 2012-09-20
  • 2014-02-08
  • 2012-05-31
  • 1970-01-01
  • 2012-04-18
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多