如果用户的手机同意了发送诊断内容,那么,app崩溃的时候就会把log发送的app store,然后我们就能够下载,分析。
以下是crash log的一部分
Last Exception Backtrace: 0 CoreFoundation 0x30acaf46 exceptionPreprocess + 126 1 libobjc.A.dylib 0x3af0b6aa objc_exception_throw + 34 2 CoreFoundation 0x30a0152e -[__NSArrayM objectAtIndex:] + 226 3 appName 0x000f462a 0x4000 + 984618 4 appName 0x00352aee 0x4000 + 3468014 … 18 appName 0x00009404 0x4000 + 21508
执行命令:xcrun dwarfdump --uuid appname.app得到结果:UUID: E70CA32E-303D-387D-9A60-7D4402511F42 (armv7) appname.app
提取.dSYM文件的UUID:
执行命令:xcrun dwarfdump --uuid appname.app.dSYM得到结果:UUID: E70CA32E-303D-387D-9A60-7D4402511F42 (armv7) appname.app.dSYM/Contents/Resources/DWARF/appname.app
提取.crash文件的UUID:
可以看到以上三个文件的UUID是相同的,代表我们可以去解析了。执行命令:grep "appName armv" *crash 或者 grep --after-context=2 "Binary Images:" *crash
得到结果:appname.crash:0x9000 - 0x320fff appname armv7 <e70ca32e303d387d9a607d4402511f42> /var/mobile/Containers/Bundle/Application/772F5038-6FA1-4D18-9057-F57BAF1EC240/appname.app/appname
其中<e70ca32e303d387d9a607d4402511f42>就是UUID
提取.crash文件的UUID不仅可以用命令行,还可以直接打开.crash文件,找到Binary Images:区域,同样会有以上命令行得出的结果
Last Exception Backtrace: 0 CoreFoundation 0x30acaf46 exceptionPreprocess + 126 1 libobjc.A.dylib 0x3af0b6aa objc_exception_throw + 34 2 CoreFoundation 0x30a0152e -[__NSArrayM objectAtIndex:] + 226 3 appName 0x000f462a 0x4000 + 984618 4 appName 0x00352aee 0x4000 + 3468014 … 18 appName 0x00009404 0x4000 + 21508
0 appname 0x001b27d7 appname + 1394647 1 appname 0x001b2f05 appname + 1396485