Eclipse 中的 Android NDK 调试 - 如何停止仅在步入 native 代码时发生的段错误/SIGILL

标签 android eclipse debugging android-ndk

我已经使用 Android NDK(在 Windows XP 上,使用 Cygwin)在 Eclipse 中为 native 代码设置了调试,现在我可以在 Java 和 native 代码中设置断点,并且调试器将正确地中断它们。我的问题是,在单步执行 native 代码时,我经常会遇到段错误/SIGILL,而这些错误在继续越过断点时不会发生。

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

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

我在模拟器(运行 2.3.3)和设备(运行 2.2 - 令人惊讶地没有我预期的线程问题)上都尝试过,结果相似(尽管如果我没记错的话,失败发生在代码的不同点)。

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

非常感谢


编辑:这从来没有真正解决,但任何想看看我的 NDK 调试指南的人,你可以找到它 here .

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

最佳答案

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

关于Eclipse 中的 Android NDK 调试 - 如何停止仅在步入 native 代码时发生的段错误/SIGILL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5899703/

相关文章:

java - STS工具套件一直挂着

debugging - 您最喜欢的反调试技巧是什么?

Android 相对布局对齐中心

android - 如何在 Android 上的 Java Canvas 对象上使用 SKIA C++ API 进行绘图?

Android 4.2以下如何设置layoutDirection为RTL

android - NineOldAndroids ObjectAnimators 不适用于 ProGuard 和签名的 apk

java - eclipse "deployment assembly"配置在哪个文件中?

java - 如何检测eclipse插件未启动的原因?

javascript - 将 JS 代码转换为 React.js,看不出我做错了什么

java - 带 Tomcat 的 Eclipse $$EnhancerByCGLIB$$ 'Unable to install breakpoint'