【技巧沙龙】AI开辟者拭魅战营-7分钟打造1个定制技能。7月22号,我们等你一路!
1、设置异常断抱病运行

设置异常断点.png
解释:设置Xcode异常断点后运行法度榜样,产生Crash时,断点会定位到掉足的代码行,但仅实用于开辟阶段。线上APP的Crash还须要经由过程收集Crash机制来捕获Crash并记录在日记中。
2、Mach异常 和 Unix旌旗灯号
- iOS Crash产生时,先产生Mach异常(最底层的内核级异常),然后Mach异常在host层被ux_exception转换为响应的Unix旌旗灯号,并经由过程threadsignal将旌旗灯号送达到掉足的线程。
- 在捕获Crash事宜时,优选Mach异常。因为Mach异常处理会先于Unix旌旗灯号处理产生,如不雅Mach异常的handler让法度榜样exit了,那么Unix旌旗灯号就永远不会达到这个过程了。而转换Unix旌旗灯号是为了兼容更为风行的POSIX标准(SUS规范),如许就不必懂得Mach内核也可以经由过程Unix旌旗灯号的方法来兼容开辟。
- 在筹划实现时,经由过程捕获Mach异常+Unix旌旗灯号组合方法来捕获Crash事宜。在选择具体筹划时,可以选择PLCrashReporter如许优良的开源项目,也可以选择友盟、Bugly 这类完美的Crash上报和统计的产品(试项目需求而定)。
3、捕获Crash
并不是所有的Crash都可以捕获到NSException,如不雅捕获不到,可以应用signal机制来捕获Crash产生时的缺点内容。
1) 可以捕获的NSException,经由过程注册NSUncaughtExceptionHandler捕获异常信息
- //注册异常处理函数
- NSSetUncaughtExceptionHandler(&uncaught_exception_handler);
- //异常处理函数
- static void uncaught_exception_handler (NSException *exception) {
- //可以取到 NSException 信息
- //...
- abort();
- }
解释: 应用Objective-C的异常处理是不克不及获得signal的。
2) 无法捕获的NSException,应用Unix标准的signal机制,注册SIGABRT, SIGBUS, SIGSEGV等旌旗灯号产生时的处理函数。
3、WatchDog 超时造成的Crash
- 一般异常编码是0x8badf00d ,表示应用是因为产生watchdog超时而被iOS终止的。平日是应用花费太多时光而无法启动、终止或响应用体系事宜。
- 场景1:主线程中履行耗时的操作,导致主线程被卡跨越必定的时光。解决办法:主线程中只负责UI的更新和响应,将耗时的操作采取异步的方法放到后台线程履行。耗时操作包含:收集请求,数据库读写等。
- //注册处理SIGSEGV旌旗灯号
- signal(SIGSEGV,handleSignal);
- // 注册处理其他旌旗灯号 ....
- //旌旗灯号处理函数
- static void handleSignal( int sig ) {
- }
在符号化时刻,还可以应用atos敕令。发明armv7处理器上的crash应用symbolicatecrash无法符号化。
二、Crash日记构成
上部分介绍了Crash的捕获,这部分来看看Crash日记的构成。
1、日记内容Demo
- grep "AppName arm" *crash
- xcrun atos -o AppName.app.dSYM/Contents/Resources/DWARF/AppName -l 0x5000 -arch armv7
日记重要分为六个部分:过程信息、根本信息、异常信息、线程回溯、线程状况和二进制映像。下面是大年夜某APP具体的Crash日记抽出的重要信息,展示如下:
- //1、过程信息
- Hardware Model: iPhone9,2
- Process: AppName [3580]
- Path: /var/containers/Bundle/Application/C7B90C8A-E269-4413-A011-552971D1ED39/AppName.app
推荐阅读
cp 13 /home/m/Downloads/Compressed 因为我们已经知道文件名包含 .zip 扩大名,是以我们可以应用 .zip 扩大名进行搜刮。它将限制输出结不雅并显示所需的过程。很多情况下,删除的文件都可以恢复,比>>>详细阅读
本文标题:浅谈iOS Crash(一)
地址:http://www.17bianji.com/lsqh/36347.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示