Skip to main content
 首页 » 编程设计

android-ndk之调试HelloJni的原生代码

2024年05月29日36sky-heaven

我几天来一直在尝试调试示例 hello-jni 的 C 代码,但没有成功。我已经安装了所有要求,并遵循了许多博客文章(每次都重复该过程)来尝试使其正常工作。

我正在使用

  • Windows 7 64 位
  • 带有 CDT 8.0.2 的 Eclipse Juno
  • Android NDK r8b
  • Android SDK 20.0.3
  • 安装了最新的 cygwin、make、gcc-core 和 gcc-g++(尽管我认为 NDK r8b 不需要这个?)

我已经关注了这个 http://developer.android.com/tools/sdk/ndk/index.html 设置并构建 apk。它构建和安装得很好,如果作为 Android 应用程序启动,我可以调试 java 代码

我关注了这篇关于 NDK 插件的文章 http://tools.android.com/recent/usingthendkplugin 但是,当作为 Android native 应用程序在 C 代码中设置断点启动时,应用程序会正常启动并运行,不会遇到断点,也不会出现错误消息!

任何帮助将不胜感激。 谢谢!

编辑:

以下是一些错误,这些错误在控制台中出现半秒后被清除

警告:解析目标库列表时(第 2 行):没有为/system/bin/linker 定义段

警告:无法加载 52 个库的共享库符号,例如/system/bin/链接器。

使用“info sharelibrary”命令查看完整列表。

您需要“set solib-search-path”或“set sysroot”吗?

警告:无法找到动态链接器断点函数。

GDB 将无法调试共享库初始值设定项 并跟踪显式加载的动态代码。

退出(程序恢复时等待信号 SIGINT)

请您参考如下方法:

事实证明,我使用的上述指南就是我所需要的,并且一切正常。

警告消息只是...警告,因此 native 代码的调试一直有效。 我的问题是 native 函数调用,在 gdb 可以附加之前,我的断点立即被调用。我将 JNI 函数调用放入 onClick 中,发现我的断点最终被命中。

我希望上面的链接和这个答案可以帮助别人。 谢谢...