问题:bugly中崩溃分析SIGABRT
手机信息:
例一:
设备机型:模拟器SIMULATOR ANDROID
系统版本:Android 6.0.1,level 23
ROM:OnePlus/OnePlus2
CPU架构:x86
例二:
设备机型:荣耀 BKL AL20
系统版本:Android 10,level 29
ROM:HuaWei/EMOTION
CPU架构:aarch64
解决方案
abort program
SIG是信号名的通用前缀。ABRT是abort program的缩写。
当操作系统发现不安全的情况时,它能够对这种情况进行更多的控制,必要的话,它能要求进程进行清理工作。在调试造成此信号的底层错误时,并没有什么妙招。 如 cocos2d 或 UIKit 等框架通常会在特定的前提条件没有满足或一些糟糕的情况出现时调用 C 函数 abort (由它来发送此信号)。
如果是iOS系统:
发生在UIApplication WillTerminate 时,是主动退出应用时发生的,所以对用户没什么实际影响。
iOS10访问相册时发生,目前只发生在iOS10+系统,需要修改工程plist文件,加入访问权限提示信息。
补充:iOS 10 has updated privacy policy and implemented new privacy rules. You have to update your Info.plist app with this following fields by authorisation asked.
注:NE (Native layer exception) 发生在Linux用户空间的异常,通常是由C/C++代码和库文件引起的。比如内核发出的NE信号(SIGILL、 SIGABRT、 SIGBUS等)
其他可能原因
1、double free/free 没有初始化的地址或者错误的地址
2、堆越界
3、assert
Andorid开启手机Log日志
360手机:1、在桌面点击拨号,在拨号盘输入“*20121220#”,进入工程模式; 2、看到日志输出等级,点进去 Log print enable 选 enable Java log level 选 LOGV C and C++ log level 选 LOGV Kernel log level 选 KERN_DEBUG
华为手机:打开log开关的方法是:进入拨号界面输入:*#*#2846579#*#* 依次选择ProjectMenu---后台设置----LOG设置---LOG开关 点击打开
小米:第一种打开拨号盘输入*#*#284#*#*就会提示你正在生成LOG文件;第二种单开设置,关于手机,找到处理器连点就会提示你正在生成LOG文件!第一种适用于MIUI5全机型和MIUI6,第二种仅适用于MIUI6!
魅族手机:找到手机设置-->辅助功能-->开发者选项-->高级日志输出-->全部允许