1.符号化crash日志须要3样东西:ios
1).crash日志自己(如:example.crash),从Xcode的organizer导出或者来自Itunes Connect.xcode
2).crash日志所对应的.app包(如:example.app)若是你有的是.ipa包,你能够解压后在Payload/文件夹下得到.app包app
3).crash日志多对应的.dSYM包iphone
2.开始符号化以前,先检查一下以上3样东西是否相对应(UUID):ui
crash日志中能够看到相似一下内容:spa
... Binary Images: 0xe1000 - 0x1f0fff +example armv7 <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example 0x2febf000 - 0x2fedffff dyld armv7s <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld ...
说明,这个二进制镜像名为 example.app/example,UUID为 aa5e633efda8346cab92b01320043dc3 .
.net
能够用如下命令检查.app的UUID:3d
dwarfdump --uuid example.app/example UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example
检查.dSYM文件的UUID:日志
dwarfdump --uuid example.app.dSYM UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example
3.使用symbolicatecrash脚本code
若是是Xcode 6.1,使用:
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log
若是找不到该脚本,使用:
find . -name symbolicatecrash
用终端查找和crash日志中的uuid一只的符号文件:
mdfind "com_apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"
若是遇到 "DEVELOPER_DIR" is not defined 的报错,执行如下命令:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
2.使用终端符号化日志:
xcrun atos -o MyApp.app/MyApp -arch armv7 -l 0xb7000 -f MyApp.crash
其中0xb7000就是crash日子中紧跟"Binary Images:"后面的地址
参考:
http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/how-to-solve-symbolication-problems
http://stackoverflow.com/questions/1460892/symbolicating-iphone-app-crash-reports