我有一个在Windows 10下由Android Studio 2.2.3创建的android项目,该项目通过其包装jar(通过JNI)使用本机库。本机库是由 qmake 在 Android Studio 之外构建的,它将使用 android NDK r13b 中的 GCC 4.9 生成本机共享库,代码编译为-g
选项。
为了使用这个本机库,我将包装罐放在下面<proj_path>/app/libs
目录和本机库<proj_path>/app/src/main/jniLibs/armeabi-v7a
,一切正常,我可以从java代码成功调用本机库中实现的方法。
问题是,当我调试这个android项目时,我在cpp文件中设置的断点没有生效,请注意,cpp文件不在android项目的源代码树中,我只是从android studio打开它。我已经安装了最新的 LLDB,并使用“混合”调试类型开始调试,我还使用“图像列表”LLDB 命令来确认调试时加载的本机库图像是未剥离的版本。但断点不会命中。
我的配置有什么问题吗?
有人可以给我一些建议吗?
Thanks!
如果您的程序在预编译的代码上运行,您如何期望 AndroidStudio 达到断点?如果您在 Notepad++ 应用程序的源代码中放置一个断点,情况会是一样的。相反,您必须告诉您的项目/代码使用源代码而不是预编译的库。为此,请删除所有 .so 文件并链接源代码,以便 NDK 将从那里进行编译。
EDIT :
显然是-g
标志是我错过的神奇部分。对于想要深入了解此标志的人来说,可以作为起点的一些参考资料如下:https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_16.html https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_16.html就我个人而言,我从来没有需要过它,但对于其他一些情况来说它可能会很方便。虽然不确定 Android Studio 是否支持它。无论如何,干净的方式仍然包括在 NDK 应用程序中包含源代码,以用于调试目的并确定您正在调试的内容;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)