根据crash日志的来源,处理方法可以分为2类
1、crash日志来自于真机,并能找的到dYSM文件:
步骤一:
步骤二
symbolicatecrash是一个隐藏工具,它在我的Mac中的具体路径如下(Xcode6.1.app请换成你的Xcode名称)
/Applications/Xcode6.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
在终端中输入:
find /Applications/Xcode6.1.app -name symbolicatecrash -type f
把得到的地址/Applications/Xcode6.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/ 拷贝出来
在终端中输入:open /Applications/Xcode6.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/
拷贝出symbolicatecrash
步骤三
首先用cd命令进入到crash文件夹下,然后输入以下命令
export DEVELOPER_DIR="/Applications/Xcode6.1.app/Contents/Developer"
./symbolicatecrash /Users/xxxx/Desktop/crash/InOrder.crash /Users/xxxx/Desktop/crash/InOrder.app.dSYM > Control_symbol.crash
2、crash来自于其他或者找不到dYSM文件
0 CoreFoundation 0x23d94c1f __exceptionPreprocess + 127
1 libobjc.A.dylib 0x318bcc8b objc_exception_throw + 36
2 CoreFoundation 0x23d94929 -[NSException raise] + 6
3 Foundation 0x24a775ab -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 260
4 Foundation 0x249de677 -[NSObject(NSKeyValueCoding) valueForKey:] + 200
5 AppName 0x002c5509 0xb9000 + 2147593
6 AppName 0x00233feb PBWireFormatGetTagFieldNumber + 5572
atos -arch armv7 -o AppName -l 0xb9000 0x002c5509
如果没有基地址 load address
根据公式,可以通过
load address = stack address - offset
如6 AppName 0x00233feb PBWireFormatGetTagFieldNumber + 5572
atos -arch armv7 -o AppName -l 0x232A27 0x00233feb