2012-11-06 35 views
5

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

我使用

  • 64位Windows 7
  • 朱诺的Eclipse CDT与8.0.2
  • 的Android NDK R8B
  • Android SDK中20.0.3
  • 最新用make,cygwin的GCC - 核心和gcc-g ++安装(我认为 NDK r8b不需要这个?)

我已按照此 http://developer.android.com/tools/sdk/ndk/index.html 设置和构建apk。它建立并安装罚款,如果推出为Android应用程序

我跟着这篇文章对NDK插件 http://tools.android.com/recent/usingthendkplugin 但我可以调试Java代码的Android原生应用程序,在C代码断点启动时,应用程序启动并正常运行,没有断点,没有错误信息!

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

编辑:

下面是出现在控制台半秒一些错误被清除之前

警告:分析目标库列表(第2行):否/系统/ bin中定义的段/ linker

警告:无法为52个库加载共享库符号,例如/系统/斌/连接器。

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

你需要“设置solib-search-path”或“set sysroot”吗?

警告:无法找到动态链接器断点功能。

GDB将无法调试共享库初始化程序 并跟踪显式加载的动态代码。

退出(预期信号SIGINT程序恢复时)

回答

4

原来我用的都是我所需要的一切正在上述指南。

警告消息只是...警告,所以本机代码的调试一直工作。 我的问题是我的断点的本地函数调用被立即调用 - 在gdb可以附加之前。我把JNI函数调用放到了一个onClick中,发现我的断点最终被击中。

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

+0

谢谢!!帮我 – marchinram

+1

非常感谢。它甚至两年后完美工作!:) – Vyacheslav

0

根据NDK文档.. “目前‘NDK-GDB’需要Unix shell中运行,这意味着 Cygwin的需要在Windows上运行它。我们希望摆脱这种 限制未来的NDK版本。“

JeffG是否可以在没有cygwin的情况下在Windows上调试本机代码?

+0

我已经安装了cygwin。所有工作正常 – JeffG

+0

杰夫,你能分步解释你是怎么做的吗? – Ali

+0

查看我的问题上面的所有教程链接和我的答案上面 – JeffG