android - 如何在 NDK 原生代码中获取断点并在 Android Studio 中调试原生代码?

标签 android android-studio android-ndk

我正在使用 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 预览中,过程有点不同(我认为更容易):

  1. 安装“LLDB”:进入工具->Android->SDK 管理器,然后进入“SDK 工具”选项卡并确保选中“LLDB”(靠近列表末尾通常)
  2. 选择“Debug”变体:在AS左下角,点击“Build Variants”,默认调试变体名为“Debug”
  3. 选择原生配置:运行按钮左侧(绿色三角形),默认原生配置称为“app-native”
  4. 设置断点
  5. 点击运行按钮右侧的小错误,以调试方式启动您的应用

如果不起作用,请检查您的 native 配置是否选择了调试类型“混合”:在播放按钮右侧,单击小三角形,选择“编辑配置”,选择您的“应用程序原生”配置,进入“调试器”选项卡并选择“调试类型:混合”。

关于android - 如何在 NDK 原生代码中获取断点并在 Android Studio 中调试原生代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28602260/

相关文章:

android - SeekTo 不会触发 MediaControllerCompat 中的 onPlaybackStateChanged

动态插入 View 时android边距不起作用

android - 快速序列化android studio gradle错误

java - 在 Android Studio 中,将 Java 代码粘贴到 Kotlin 文件中不再转换为 Kotlin

android - 我可以在 OpenSL SE for Android 中创建多少个 PCM AudioPlayer

android - 如何解决以非零退出值2/退出值-1完成的 “Android/Sdk/ndk-bundle/ndk-build.cmd”

android - 无法在sdcard android上写入文件

android - 在 Android Studio 中成功构建仍然在设备上崩溃

android - 基本的 Android 启动器启动画面

android - 如何使用 valgrind 启动一个安卓应用程序