Genymotion总报错:Fatal signal 11 (SIGSEGV)

本文详细介绍了在使用Genymotion时遇到的SIGSEGV错误的排查和解决过程,包括错误信息解释、问题定位以及通过更换镜像解决的方法。此外,还补充了遇到安装APK错误时的解决方案。
我在Windows环境使用Genymotion的时候,总报如下的错误:
<span style="font-family:SimSun;font-size:14px;">06-01 17:50:19.145: A/libc(19868): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 19890
06-01 17:59:58.969: A/libc(20434): Fatal signal 11 (SIGSEGV) at 0x890875cb (code=1), thread 20434</span>
查找网贴(http://www.programlife.net/debugger-magic-number.html)得知,SIGSEGV是Signal Segmentation Violation。
这属于很底层的问题了,应该是JAVA虚拟机以下,更准确地说,是C语言(so库文件或so的运行环境)代码导致的。
0xDEADD00D ("dead dude") is used by Android in the Dalvik virtual machine to indicate a VM abort.
在网贴(http://stackoverflow.com/questions/20640647/fatal-signal-11-sigsegv-code-2-on-genymotion-emulator-not-using-ndk)中,

给出了非常具备参考价值的建议:

我用的也是4.3 X86的镜像(Image),我试了“vmSafeMode=ture”,没用。问题依然存在。
我又试了将镜像切换到4.2.2,问题解决了。太好了!太帅了!太棒了!


补充:
切换镜像后,如果运行APK时出现错误:INSTALL_FAILED_CPU_ABI_INCOMPATIBLE,
则需要下载Genymotion-ARM-Translation,并将其拖入到虚拟机镜像内,方可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

`Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x104` 错误通常表示程序试图访问未分配给它的内存地址,这是一个严重的错误,往往是由本地代码(如C或C++)中的指针问题引起的。对于 `ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());` 这行代码报错,可能有以下几种解决方案: ### 1. 检查布局文件 确保布局文件 `activity_main.xml` 存在且没有语法错误。如果布局文件有问题,数据绑定库可能无法正确生成绑定类。 ```xml <!-- activity_main.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 布局内容 --> </LinearLayout> ``` ### 2. 启用数据绑定 确保在 `build.gradle` 文件中启用了数据绑定。在 `android` 块中添加以下代码: ```groovy android { ... dataBinding { enabled = true } } ``` ### 3. 检查项目构建 有时候,构建缓存可能会导致问题。可以尝试清理项目并重新构建: - 在 Android Studio 中,选择 `Build` -> `Clean Project`。 - 然后选择 `Build` -> `Rebuild Project`。 ### 4. 检查本地代码 由于 `SIGSEGV` 错误通常与本地代码有关,检查项目中的 C 或 C++ 代码,确保没有指针错误、内存泄漏或空指针引用。例如,在 `native-lib.cpp` 中: ```cpp // native-lib.cpp #include <jni.h> #include <string> extern "C" JNIEXPORT jstring JNICALL Java_com_luohb_zzx_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); } ``` ### 5. 检查依赖库 确保项目中使用的所有依赖库都是兼容的,并且没有版本冲突。 ### 6. 调试本地代码 如果问题仍然存在,可以使用 Android Studio 的调试工具来调试本地代码。在 `native-lib.cpp` 中设置断点,然后运行应用程序,逐步检查代码执行过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值