博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS crash分析
阅读量:4972 次
发布时间:2019-06-12

本文共 1349 字,大约阅读时间需要 4 分钟。

此处不讨论具体的如何根据.dsym文件解析crash log的方式。

什么是崩溃:

不希望出现的中断,APP收到了系统发出的unhandle signal,来源主要由系统内核,处理器,或者应用程序本身。

一、一般的崩溃

1.违反苹果的政策:启动、恢复、暂停或退出超时;

用户强制退出:

低内存退出:MemoryWarning;

2.程序中有bug

二、崩溃解析说明

1.MemoryWarning的崩溃比较特别,没有任何trace,标志性信息即某一条trace后面有“jettisoned”。

解决方法:

可用Allocations、Leaks Instruments 或VM Tracker Instrument来帮助检查。另外,解析内存警告的log时,里面每一个page代表4k byte;

2.Exception Codes

0x8badf00d:代表 watchdog timeout,主线程阻塞超时;

0xbad22222:resume太频繁?

0xdead10cc:死锁,程序在后台时占用了系统资源

0xdeadfa11:用户强制退出程序

3.Exception Type

EXC_CRASH (SIGABRT):一般是APP做了系统不支持的操作,例如给一个对象发送其没有实现的消息;

SIGABRT is a BSD signal sent by an application to itself when an NSException or obj_exception_throw is not caught.

EXC_BAD_ACCESS (SIGSEGV):一般是APP进入了一种错误状态,大部分是内存问题;

EXC_BAD_ACCESS is a Mach exception sent by the kernel to your application when you try to access memory that is not mapped for your application. If not handled at the Mach level, it will be translated into a SIGBUS or SIGSEGV BSD signal.

另外需要注意的是:找到崩溃的线程,整个很重要,不是只有主线程才会崩溃

三、异常处理方式

1.NSUncaughtExceptionHandler

NSSetUncaughtExceptionHandler(&HandleException);

  

2.拦截系统的signal,自己进行处理;

signal(SIGABRT, SignalHandler);

  有两个信号无法拦截,SIGKILL (kill -9and SIGSTOP(终端中Ctrl+C)

四、当异常出现时如何将当前应用程序继续运行:

回到主线程,将之前线程的runlooper永久的block,用我们新的run looper继续运行。有一个缺点:之前的runlooper所占有的栈信息将会一直保持(即泄露)

转载于:https://www.cnblogs.com/dokaygang128/p/4044746.html

你可能感兴趣的文章
Windows c++应用程序通用日志组件(组件及测试程序下载)
查看>>
openstack dpdk
查看>>
【BZOJ2333】【SCOI2011】棘手的操作 treap合并
查看>>
【BZOJ1013】【JSOI2008】球形空间产生器 高斯消元
查看>>
java泛型
查看>>
基本配置2-被忽悠进了CentOS 6
查看>>
MFC的组合框(ComboBox)控件切换下拉样式
查看>>
WPF 中依赖属性的继承(Inherits)
查看>>
HttpPost works in Java project, not in Android
查看>>
JavaScript摘要
查看>>
nginx与fastdfs配置详解与坑
查看>>
tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例
查看>>
根据对象的属性排序数组
查看>>
Winform开发框架之介绍
查看>>
在JAVA中把JSON数据格式化输出到控制台
查看>>
二进制图片blob数据转canvas
查看>>
【VIM】vim基本命令
查看>>
学习Spring Boot:(十三)配置 Shiro 权限认证
查看>>
学习Spring Boot:(二十四)多数据源配置与使用
查看>>
福布斯最佳雇主榜:谷歌母公司Alphabet再登榜首 微软次之
查看>>