应用程序崩溃与Android 4.0或更高版本

时间:2012-10-05 15:51:36

标签: android android-ndk java-native-interface native-code

我正在开发一个应用程序,我将使用android NDK& JNI。 每当我在任何Android 4.0或更高版本上运行我的应用程序时...我的应用程序将崩溃并发出以下错误...

A/libc(18556): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)
D/libEGL(18606): loaded /system/lib/egl/libGLES_android.so
D/libEGL(18606): loaded /system/lib/egl/libEGL_adreno200.so
D/libEGL(18606): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
D/libEGL(18606): loaded /system/lib/egl/libGLESv2_adreno200.so
I/Adreno200-EGLSUB(18606): <ConfigWindowMatch:2078>: Format RGBA_8888.
D/OpenGLRenderer(18606): Enabling debug mode 0

主要问题是Fatal signal 11 (SIGSEGV) at 0xdeadbaad(code=1)

如果有人知道这个......那就告诉我原因。

1 个答案:

答案 0 :(得分:0)

最初,分段错误,特别是0xdeadbaad,意味着内存损坏或类似但是,我最近发现,使用NDK,这也是断言的默认行为:在断言失败时它发送SIGSEGV,而不是SIGTRAP,并将内存指针设置为此十六进制字符串。

您应该检查您的代码是否正在呼叫断言,或者如果您使用第三方软件,请检查您是否已将正确的值传递给每个呼叫。检查这个问题的一种快速方法是在NDEBUG设置为1的情况下构建库(默认情况下,如果在Application.mk中设置APP_OPTIM:= release),并检查是否仍然存在完全相同的问题。

希望这有帮助。