自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 Crash优化与建议

文章目录一、Crash与信号1.1 Crash是如何产生的1.1.1 signal1.1.2 signal处理流程1.1.3 signal捕获1.2 Crash日志简析二、Crash优化思路2.1 分析问题2.2 可复现的crash2.3 难复现的crash2.3.1 根据信号分析2.3.2 根据exception信息提示2.3.3 根据异常地址2.3.4 根据寄存器信息2.3.5 根据附加信息2...

2019-06-27 22:11:34 2711

原创 Crash与信号

文章目录什么是信号信号如何产生信号与多线程Mach异常如何转为signal如何捕获信号关于SA_ONSTACK常见Crash信号SIGBUS VS SIGSEGV如何触发SIGBUS ?参考什么是信号信号(signal)是一种XPC通信方式。signal是一个4字节的无符号整形数字,在iOS/OSX中定义了31个已知的信号;在Unix系统中,crash仅仅是singal触发的一个行为。si...

2019-05-16 21:37:15 1008

原创 __block不适合多线程并发

objc的很多设计,从底层实现上都不完全是线程安全的,这也导致在一些极端的并发情况下,会引起竞争导致的内存访问错误问题。之前分析过_weak的设计不是多线程安全的,最近又踩坑了_block,发现这个居然也不是线程安全。当然这也不是说 _block, _weak 这些不要用了,而是说在比较频繁创建释放且有多线程使用的情况下,不要用 ___block, _weak修饰,因为他们的确不是线程安全的...

2019-04-24 21:07:47 1083

原创 汇编分析一次系统控件系统栈的crash

系统控件和系统堆栈的crash初看,总以为不好解决,本文通过一步步推导来分析定位,最终找到crash是应用堆栈触发的一、问题描述最新线上新版本遇到了一个大规模的crash,也不太好复现,crash堆栈大概如下0 CoreFoundation 0x00000001819f6d8c ___exceptionPreprocess + 2281 libobjc.A.dylib 0x00000001...

2019-01-18 15:01:17 757

原创 一次cache_getImp野指针排查

1.前言最近线上突然多了一些crash,类型是SEGV_ACCER,一看就认为是对象野指针了,基本都是多线程读写导致的;但是仔细再一看crash堆栈,不是平常的objc_xxxx,而是 cache_getImp 这就有点怪了,和平常的objc_msgSend或objc_retain等挂的不太一样;我们实际的业务代码挂在如下[delegate performSelector:didRecei...

2019-01-18 14:57:00 869 2

原创 一次_os_object_retain的crash

_os_object_retain一看挂在dispatch里,想当然都会认为难道系统有bug了,但是问题不都是靠瞎猜的,还是有了分析才好下结论。1.前言最近新版本刚上线就发现少量特别的新增crash,堆栈如下0 libdispatch.dylib 0x000000018fc296e0 __os_object_retain$VARIANT$mp + 721 mttlite 0x0000000...

2019-01-18 14:54:13 518

原创 记一次PHP与自动释放池的内存释放的坑

使用多线程遍历或操作集合对象的时候,务必要注意内存的及时释放,否则一不小心就触发内存峰值而闪退了。最近新版本发布后,有较多用户反馈闪退;经过部分走访用户初步得出结论是内存闪退,而且和PHPLibrary相关修改有关;联系用户联系了部分用户,捞取到较多日志;确定原因基本是内存闪退,发生闪退时浏览器占用了1.3G左右的内存,超过了内存限制而被jetsam杀死;这个不太合理,我们基本不会这样疯狂申...

2019-01-18 14:51:15 1906

原创 关于block嵌套定义导致的内存泄漏

block的使用极大方便了我们的开发,但是不正确的使用block时就会导致意想不到的问题。文章目录1. 单层block2. 嵌套的block3. 为什么4. 结论1. 单层blockdispatch_async(dispatch_get_main_queue(), ^{ [self stopCaptureAfer] ; });如上代...

2019-01-18 14:46:11 503

原创 不安全的weak变量

对于存在多线程释放并且并发访问的对象,不建议使用weak修饰或访问。因为weak的底层实现并不完全是线程安全,否则较容易导致over-release而crash。一、问题每次版本升级初期总是有少部分会遇到如下的crash虽然量很少,但总是有也很是烦人。没办法只能看下到底是怎么回事。二、问题描述很明显,这是一个over-release的问题;挂在objc_release里;业务代码如下...

2019-01-18 14:39:57 1450 2

原创 关于ARC与NSInvocation的一个问题

涉及二级指针/void传参的函数调用要特别留意引用计数管理的问题,因为二级指针/void传参是不涉及自动引用计数管理的,所以需要自己在合适的平衡引用计数关里。文章目录一、问题二、分析三、结语一、问题给定如下代码@implementation TestHelper- (NSString*)stringObjects{    NSMutableString *s = ...

2019-01-18 14:35:13 294

原创 iOS12 SKStoreViewController crash修复

文章目录一、前言二、问题描述三、分析问题非法内存访问四、解决问题一、前言SKStoreViewController在iOS 11上是正常没啥问题的,但到了iOS 12突然导致了大范围的闪退。这其实本质是苹果的StoreKit开发人员犯了一个很简单的错误导致的;二、问题描述从iOS 12 beta5开始我们线上逐渐多了如下堆栈的crash,到iOS 12.1发布这个问题一直依旧存在,且越来越...

2018-12-13 15:13:25 985

原创 从Object-C -> Swift3.0

当我们开始接触一门新语言时,我们难免避免不了类型和基本语法规则。我们会急切的想知道如何用新的语法规则写我们原先所熟知的语句。本文旨在对于Object-C和Swift做一些基本的对比。通过阅读本文,您能快速的了解Swift3.0和Object-C的一些差别

2016-07-28 21:39:52 2960

原创 UMD格式与解析详解

本文是对于UMD格式结构分析,并针对iOS平台利用Object-C解析UMD文件,给出完整流程与实现。UMD是一种在几年前较为常见的电子书格式,尽管现在它已经逐渐被遗忘了。UMD主要分为3种格式类型:纯文本格式,漫画/写真集格式,连环画(文字+图片)格式。本文只讨论纯文本格式(即通用的小说格式)的umd文件的解析过程与格式结构分析。UMD文件本质是经过zlib压缩后的压缩数据,并且按照特定的先后顺序来排列小说文章的结构与内容。小说的内容被顺序的分成有序且连续的数据块。UMD文件编码为UNICODE(UCS

2015-05-12 12:50:49 7600

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除