目录 (?)
iOS分析定位崩溃问题有很多种方式,但是发布到AppStore的应用如果崩溃了,我们该怎么办呢?通常我们都会在系统中接入统计系统,在系统崩溃的时候记录下崩溃日志,下次启动时将日志发送到服务端,比较好的第三方有umeng之类的。今天我们来讲一下通过崩溃日志来分析定位我们的bug。
分析崩溃日志的前提是我们需要有dYSM文件,这个文件是我们用archive打包时生成的.xcarchive后缀的文件包。一个良好的习惯是,在你打包提交审核的时候,将生成的.xcarchive与ipa文件一同拷贝一份,按照版本号保存下来,这样如果线上出现问题可以快速的找到你想要的文件来定位你的问题。
NSConcreteMutableAttributedString addAttribute:value:range:: nil value
(null)
((
CoreFoundation 0x0000000185c642f4 + 160
libobjc.A.dylib 0x00000001974880e4 objc_exception_throw + 60
CoreFoundation 0x0000000185c64218 + 0
Foundation 0x0000000186a9dfb4 + 152
Xmen 0x10073fb30 Xmen + 7600944
Xmen 0x1006bbbf4 Xmen + 7060468
UIKit 0x000000018a9a47fc + 60
UIKit 0x000000018a9a512c + 104
UIKit 0x000000018a6b2b6c + 88
UIKit 0x000000018a9a4fd4 + 444
UIKit 0x000000018a78e274 + 1012
UIKit 0x000000018a999aac + 2904
UIKit 0x000000018a785268 + 172
UIKit 0x000000018a6a1760 + 580
QuartzCore 0x0000000189fe9e1c + 152
QuartzCore 0x0000000189fe4884 + 320
QuartzCore 0x0000000189fe4728 + 32
QuartzCore 0x0000000189fe3ebc + 276
QuartzCore 0x0000000189fe3c3c + 528
QuartzCore 0x0000000189fdd364 + 80
CoreFoundation 0x0000000185c1c2a4 + 32
CoreFoundation 0x0000000185c19230 + 360
CoreFoundation 0x0000000185c19610 + 836
CoreFoundation 0x0000000185b452d4 CFRunLoopRunSpecific + 396
GraphicsServices 0x000000018f35b6fc GSEventRunModal + 168
UIKit 0x000000018a70afac UIApplicationMain + 1488
Xmen 0x1008cf9c0 Xmen + 9238976
libdyld.dylib 0x0000000197b06a08 + 4
)
dSYM UUID: 30833A40-0F40-3980-B76B-D6E86E4DBA85
CPU Type: arm64
Slide Address: 0x0000000100000000
Binary Image: Xmen
Base Address: 0x000000010007c000
dwarfdump --uuid Xmen.app.dSYM
发现与我们日志中的:UUID和CPU Type是相匹配的
这一行告诉我们崩溃代码所在的具体文件
这一行告诉我们崩溃代码是在哪一个方法里面
这一行告诉我们崩溃代码具体在哪一行了
好的,现在我们分析到了崩溃代码在哪一行了,下面我们来找一找bug
我们的代码都应该有托管平台,每个版本上线都需要打一个tag,这是一个好习惯。下面我拉下我崩溃的对应版本的tag,找到崩溃代码那一行:
结合崩溃日志中告诉我:崩溃的原因是value为nil,发现是因为receiverTelephone字段中有中文导致转url时为nil导致的,下面的解bug就看各自本领啦。
希望对您有帮助,谢谢支持~
参考文章:
http://www.cocoachina.com/ios/20150720/12627.html
http://www.jianshu.com/p/115ef29b2c90
http://blog.csdn.net/u012072580/article/details/53739688
附上:
$ dwarfdump --uuid SP2P_7.app.dSYM
UUID: AEE06486-ECFB-3D44-8446-422378ED8399 (armv7) SP2P_7.app.dSYM/Contents/Resources/DWARF/SP2P_7
UUID: 0CEB8AEB-2FA9-3501-A9E9-3FF5D149A763 (arm64) SP2P_7.app.dSYM/Contents/Resources/DWARF/SP2P_7
$ dwarfdump --arch=arm64 --lookup 0x100348fdc /Users/mz/Desktop/111/2017_8.7.4.xcarchive/dSYMs/SP2P_7.app.dSYM/Contents/Resources/DWARF/SP2P_7