Eclipse中的Android NDK调试 - 如何阻止仅在步进本机代码时发生的segfaults/SIGILL

epo*_*ine 43 eclipse debugging android android-ndk

我已经在Eclipse中为使用Android NDK(在Windows XP上,使用Cygwin)的本机代码设置调试到我可以在Java和本机代码中设置断点的阶段,调试器将正确地破坏它们.我的问题是,当单步执行本机代码时,我会经常得到分段错误/ SIGILL,而不是在继续通过断点时发生的.

  • 我的应用程序是可调试的,如AndroidManifest.xml中所定义
  • 我更改了(NDK)/build/core/build-binary.mk以防止它在APP_OPTIM定义为debug 时剥离调试符号,它位于我的jni目录中的Application.mk文件中
  • LOCAL_CFLAGS := -g -O0在Android.mk文件中定义了,我也分别试过了这些标志

我已经读过这个问题与生成的优化代码有关,但关闭优化-O0对我的问题没有影响.我NDK_BUILD=1在构建时也遇到了使用标志,但debuggable=true在AndroidManifest.xml中定义显然具有相同的效果.

我在仿真器(运行2.3.3)和设备(运行2.2 - 令人惊讶地没有我预期的线程问题)上尝试了这一点,结果相似(尽管如果我没记错的话,故障发生在不同的地方)代码中的点数).

有没有人对我可以尝试的可能的修复/步骤有任何了解,和/或能够成功单步执行本机代码而没有任何问题?

非常感谢


编辑:这从未真正解决,但对于任何想要查看NDK调试指南的人,您可以在此处找到它.

编辑2:一旦NDK的新版本出现,我得到了这个问题的答案,这个问题现在可能是多余的.我的导游可能仍然有效,但我还没有使用NDK一段时间,所以我不能保证它的持续正确性.我已经接受了我的答案,因为这三个人基本上都说了同样的话,那是第一个提交的答案.

use*_*743 2

如果它适用于armeabi 而不适用于armeabi-v7a,则这应该是构建问题。解压bin目录下的apk文件,检查armeabi和armeabi-v7a中的库文件是否相同。