首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

iOS Crash不崩溃

用户在使用App的过程中,经常遇到闪退的情况,体验不太好,本文尝试探索引发闪退的原因,以及在遇到crash的情况下,尽可能的保持程序运行,并及时上报错误。...一、crash类型 1.OC层面的crash 1.1 普通类型 NSInvalidArgumentException:非法参数异常,传入非法参数导致异常,nil参数比较常见。...2.Signal层面的crash 除了OC层面的异常捕获之外,很多内存错误、访问错误的地址产生的crash则需要利用unix标准的signal机制,注册SIGABRT, SIGBUS, SIGSEGV等信号发生时的处理函数...二、存在问题 程序闪退,用户体验不好 三、监听crash 1.任凭程序闪退并上报 1.1 NSSetUncaughtExceptionHandler 捕获OC层面的crash 参考文章 (1)AppDelegate...自动修复+捕获上报 2.1 针对普通类型Crash的处理机制 hook相关的方法,增加保护机制。

2K20

了解和分析iOS Crash

新机型的发布又会让适配相关的同学忙上一阵子啦,并且iOS Crash的问题始终伴随着移动开发者。本文将从三个阶段,由浅入深的介绍如何看懂并分析一篇crash报告,一起身临其境去读懂它吧。...获取Crash Report和Low Memory Report 如何调试已经部署好的iOS Apps讨论了如何从一个iOS设备直接拿到crash report和low memory report。...· 发生crash时app所依赖的OS的符号表信息。这些符号表包含了特定OS版本 (例如iOS9.3.3)上的framework所需调试信息。...SIGQUIT不代表进程发生Crash了,但是它确实反映了某种不合理的行为。 iOS中,如果占用了太长时间,键盘扩展程序会随着宿主app被干掉。...一旦app进入挂起状态,被iOS在任何时间终止掉都是合理的,因此这时候不会生成crash report。

1.7K20

了解和分析iOS Crash

新机型的发布又会让适配相关的同学忙上一阵子啦,并且iOS Crash的问题始终伴随着移动开发者。本文将从三个阶段,由浅入深的介绍如何看懂并分析一篇crash报告,一起身临其境去读懂它吧。...获取Crash Report和Low Memory Report 如何调试已经部署好的iOS Apps讨论了如何从一个iOS设备直接拿到crash report和low memory report。...[ 相同堆栈信息下的不同程度的符号化 ] 用Xcode符号化iOSCrash report 一般来说,Xcode会自动尝试符号化它所有的Crash report。...· 发生crash时app所依赖的OS的符号表信息。这些符号表包含了特定OS版本 (例如iOS9.3.3)上的framework所需调试信息。...一旦app进入挂起状态,被iOS在任何时间终止掉都是合理的,因此这时候不会生成crash report。

1.4K30

iOS_Crash 异常类型

EXC_CRASH(SIGABRT) 表示进程收到 SIGABRT 信号而终止,通常此信号是因为进程调用了 abort()函数。 如应用程序遇到了未捕获的 OC 或 C++ 的语言异常。 3.1....EXC_CRASH(SIGKILL) 操作系统终止了该进程,报告中的 Termination Reason 带有解释崩溃原因的代码。...有关使程序更高效运行,可参阅iOS Performance and Power Optimization with Instruments ---- 0xdead10cc 死锁 (dead lock)...EXC_CRASH(SIGQUIT) 应另一个进程的请求而终止 EXC_CRASH (信号退出) 表示进程应另一个有权管理其生命周期的进程的请求而终止。...如果 iOS 和 iPadOS 键盘扩展加载时间过长,主应用程序会终止键盘扩展。尽管与 watchdog 的异常信息不同,可参考:2.4.1. 0x8badf00d watchdog ---- 6.

1.4K20

再谈 iOS App Crash 防护

去年,网易杭州研究院曾经针对 crash 的防护有提出『大白健康系统--iOS APP 运行时 Crash 自动修复系统』方案,使得 crash 防护这个想法真正被落实,但至今该方案的具体实现并没有被开源...友情提示,阅读本文前需对网易『大白健康系统--iOS APP 运行时 Crash 自动修复系统』一文有所了解,该文中已有的实现方案,本文不会再花更多笔墨进行赘述。...对于我们 iOS 应用层的 App,可简单总结为应用执行了某些不被允许的操作触发了系统抛出异常信号但又没有处理这些异常信号从而被杀掉的现象,比如常见的闪退(crash to desktop)。...: iOS/OSX 在被抛出异常后,被认为是不可恢复的,如果我们强行恢复 Runloop,整个 App 的不确定性将会更大,crash 的部分可能会再次发生; 内核抛出的异常一般都是较严重的底层硬件问题...这其实是 iOS 系统在 ARC 下的一个坑,ARC 导致了 over-released 的 crash,暂时没有其他更好的解决方案,只能把这部分防护改为 MRC 编写。

2.1K40

了解和分析iOS Crash Report

文章发布后我才发现,这并不是针对iOS Crash report唯一的翻译版本。哪篇翻译的更好这个见仁见智,但我希望这篇是翻译的最用心的版本。...获取Crash Report和Low Memory Report 如何调试已经部署好的iOS Apps讨论了如何从一个iOS设备直接拿到crash report和low memory report。...图3 相同堆栈信息下的不同程度的符号化 用Xcode符号化iOSCrash report 一般来说,Xcode会自动尝试符号化它所有的Crash report。...发生crash时app所依赖的OS的符号表信息。这些符号表包含了特定OS版本(例如iOS9.3.3)上的framework所需调试信息。...一旦app进入挂起状态,被iOS在任何时间终止掉都是合理的,因此这时候不会生成crash report。

1.6K20

iOS App 启动必 crash 监控

摘要 在 iOS 11 Beta 刚刚发布时,有用户在微博反馈:升级到 iOS 11 Beta 后,微信读书 App 遇到启动必 crash 的绝境,无法使用。...用户看到的界面,是我们开源的 iOS 启动连续闪退保护方案 提示。 调试发现,是一段 iOS 11 不兼容的代码引发的问题。我们通过修改不兼容代码,解决了问题。...我们设计了一个特征值以判断这个问题,并扩展了 iOS 启动连续闪退保护方案,提供了日志上报接口,帮助开发者在第一时间发现启动必 crash 问题。...启动必 crash 判断 如果特征值为:0|0|0|0…,用户遇到了启动必 crash 的问题,且 crash 堆栈一致。...开发者接入 开发者在 iOS 项目引入 GYBootingProtection 组件后, AppDelegate+GYBootingProtection.m ,插入一行上报代码,即可把启动必 crash

1.7K30

iOS 开发:『Crash 防护系统』(二)KVO 防护

通过本文,您将了解到: KVO Crash 的主要原因 KVO 防止 Crash 的常见方案 我的 KVO 防护实现 测试 KVO 防护效果 文中示例代码在: bujige / YSC-Avoid-Crash...KVO Crash 的常见原因 KVO(Key Value Observing) 翻译过来就是键值对观察,是 iOS 观察者模式的一种实现。...方案一:大白健康系统 -- iOS APP运行时 Crash 自动修复系统 首先为 NSObject 建立一个分类,利用 Method Swizzling,实现自定义的 BMP_addObserver...---- 参考资料 大白健康系统 -- iOS APP运行时 Crash 自动修复系统 iOS-APP-运行时防 Crash 工具 XXShield 练就 - 茶茶的小屋 iOS 中的 crash 防护...(三)KVO 造成的 crash iOS KVO crash 自修复技术实现与原理解析

4.2K41

iOS 开发:『Crash 防护系统』(一)Unrecognized Selector

这个系列将会介绍如何设计一套 APP Crash 防护系统。...sent to class(找不到类方法实现) KVO Crash KVC Crash NSNotification Crash NSTimer Crash Container Crash(集合类操作造成的崩溃...,例如数组越界,插入 nil 等) NSString Crash (字符串类操作造成的崩溃) Bad Access Crash (野指针) Threading Crash (非主线程刷 UI) NSNull...我们从『 iOS 开发:『Runtime』详解(一)基础知识』知道了消息转发机制中三大步骤:消息动态解析、消息接受者重定向、消息重定向。...具体实现可参考代码: bujige / YSC-Avoid-Crash ---- 参考资料 How Not to Crash iOS 防止应用崩溃 大白健康系统--iOS APP运行时Crash自动修复系统

2K30

iOS_Crash 四:的捕获和防护

1.Crash 捕获 根据 Crash 的不同来源,分为以下三类: 1.2.NSException 应用层的异常,未被捕获的异常,导致程序向自身发送了 SIGABRT 信号而崩溃,是应用程序自己可控的...previousUncaughtExceptionHandler = NULL; + (void)registerUncaughtExceptionHandler { // 将别人之前注册的Crash...n %@\n callStackSymbols:\n %@", name, reason, [stackInfo componentsJoinedByString:@"\n"]]; // 保存Crash...防护 2.1.方法未实现 找不到方法的实现:unrecognized selector sent to instance,查找过程详情可见:iOS_Objective-C 消息发送(消息查找 及 消息转发...KVC 的搜索模式详情可见:iOS_KVC:Key-Value Coding-2(访问者搜索模式),当最终找不到对应的key时,会导致 crash

48050

iOS Crash 防护你看这个就够了 - 下篇

# I: Crash 类型 和多数操作系统一样,iOS 的异常也基本分为 用户层 系统底层 信号 这三个类别,接下来我们看下每种异常都做了哪些事情 Mach Exception Mach 异常...另一种是 iOS 系统独有的逻辑或者说是苹果独有的。就是用户层面的异常也都首先下沉到 mach 层再发出来,也等于是另一种意义上的 mach 异常。...,本次循环结束后 app 才退出 既下图的 retVal 被置为 NO iOS Crash 发生后 runloop 中的 do-while 循环的条件会被置为 NO,然后 Handler...# 0x5: 参考资料 Apple iOS Api iOS Open Sourcre CFRunloop XNU 3248.60.10 源码 Understanding Crash Reports on...iPhone OS 《深入解析 MAC OS X & IOS 操作系统》 # 0x6: 最后 大概这就是所有 Crash 防护的流程,通过两篇文章讲解,希望大家对 iOS 系统的 Crash 流程能有些许的了解

72120

iOS Crash防护你看这个就够了-上篇

更低的Crash率不但能让产品获得更好的用户口碑,在整个流程中也能让团队成员获得更多的成长,加深对iOS系统底层的理解,为今后的开发带了更大的帮助。 ?...在iOS系统中基本可以总结出这四个步骤, Crash防护 - 通过Hook等手段,对一些类似容器类进行入参校验等措施,来进来避免Crash的发生 Crash拦截 - 如果第一步防护失败,那么在Crash...AOP: iOS中AOP的相关知识网上线程的代码也很多,这里就不在赘述,但是在AOP这种频繁调用的场景中就需要注意的地方和坑点比较多。...AOP的性能问题:上面说了AOP的原理是会多一层方法调用,那么再结合iOS的方法转发流程可想而知,AOP必定会造成性能的损耗,而且在Crash防护场景下频繁调用,性能问题一定不能忽略。 ?...全民K歌国际版招聘Android/iOS客户端开发,点击左下方“查看原文”投递简历~ 也可将简历发送至邮箱:tmezp@tencent.com

88921
领券