【问题标题】:How can I debug C++ source code of an external native library using Android Studio 2.2.3?如何使用 Android Studio 2.2.3 调试外部本机库的 C++ 源代码?
【发布时间】:2017-07-24 17:28:59
【问题描述】:

我有一个在 Windows 10 下由 Android Studio 2.2.3 创建的 android 项目,该项目通过其包装 jar(通过 JNI)使用本机库。本机库是由 qmake 在 Android Studio 之外构建的,它将使用 android NDK r13b 中的 GCC 4.9 生成本机共享库,代码使用-g 选项编译。

为了使用这个原生库,我将包装器jar放在<proj_path>/app/libs目录下,将原生库放在<proj_path>/app/src/main/jniLibs/armeabi-v7a下,一切正常,我可以成功地从java代码调用原生库中实现的方法。

问题是我调试这个android项目的时候,我在cpp文件中设置的断点没有生效,请注意cpp文件不在android项目的源码树中,我只是从安卓工作室。我已经安装了最新的 LLDB,并以“混合”调试类型开始调试,我还使用“图像列表”LLDB 命令来确认调试时加载的本机库图像是未剥离的版本。但是断点不会命中。

我的配置有什么问题?

有人可以给我一些建议吗?

谢谢!

【问题讨论】:

  • 你有什么消息吗?我想我有同样的问题。我已经阅读了大量关于这个问题的帖子,但我没有找到任何真正的解决方案。我还发布了question,因为几天前我没有在这里发表评论的声誉。谢谢。
  • Android JNI调试不支持调试原生库,必须附上C/C++源码。

标签: c++ android-studio debugging android-ndk java-native-interface


【解决方案1】:

如果您的程序在预编译代码上运行,您如何期望 AndroidStudio 会触发您的断点?如果您在 Notepad++ 应用程序中的源代码中设置断点,情况也是如此。相反,您必须告诉您的项目/代码使用源代码而不是预编译的库。为此,请删除所有 .so 文件并链接源代码,以便 NDK 将从那里编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 2016-04-30
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 2012-09-20
    • 2016-05-11
    • 1970-01-01
    相关资源
    最近更新 更多