我正在使用 NDK 开发 android 应用程序。我有两个项目。一个是我的原生库,它使用 NDK 并生成 .so 文件。
我正在使用 Android Studio,但禁用了自动构建并使用 ndk-build 启用了构建。我使用的是 Windows 7。
现在,在生成 .so 文件后,我将它们复制到我的主应用程序项目中,该项目还使用 ndk-build 编译 JNI 函数,我在其中调用我的库的函数。我希望我在这一点上是干净的。如果没有,我会根据要求提供更多详细信息。
现在我正在使用 Android Studio 在设备中运行我的应用程序,我可以在 java 代码中设置断点并调试该代码,但我无法调试 JNI 调用以及我在单独项目中拥有的 native 代码。我需要在我的库代码中进行调试。那么有什么办法可以实现呢?
我看过 VisualGDB,但它是付费的。所以让我知道是否有任何替代方案可以完全满足我的调试要求。我搜索了很多但没有得到任何具体的解决方案。
我可以在 Android Studio 中看到附加到 android 进程的选项,在那里我可以看到我正在运行的设备,但我不确定如何使用它,因此我可以通过 native 库代码进行调试(它位于单独的项目中,没有任何 Activity )。
如果需要更多细节,请告诉我
最佳答案
在 Android Studio 2.0 预览中,过程有点不同(我认为更容易):
- 安装“LLDB”:进入工具->Android->SDK 管理器,然后进入“SDK 工具”选项卡并确保选中“LLDB”(靠近列表末尾通常)
- 选择“Debug”变体:在AS左下角,点击“Build Variants”,默认调试变体名为“Debug”
- 选择原生配置:运行按钮左侧(绿色三角形),默认原生配置称为“app-native”
- 设置断点
- 点击运行按钮右侧的小错误,以调试方式启动您的应用。
如果不起作用,请检查您的 native 配置是否选择了调试类型“混合”:在播放按钮右侧,单击小三角形,选择“编辑配置”,选择您的“应用程序原生”配置,进入“调试器”选项卡并选择“调试类型:混合”。
关于android - 如何在 NDK 原生代码中获取断点并在 Android Studio 中调试原生代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28602260/