IOS Crash信息收集
领导安排收集App Crash信息,我通过苹果提供的NSSetUncaughtExceptionHandler和对信号的监听来实现。它可以获取大部分奔溃信息,但是对于比较复杂的奔溃就不能精确定位。
搜集其它方法
一。集成Bugly,firebase, 友盟,听云等众所周知的性能/崩溃抓取组件
1.Bugly
2.firebase
3.友盟
4.听云
二。集成KSCrash,PLCrashReport等开源组件来收集崩溃日志
1.KSCrash
2.PLCrashReport
最后我集成的是TLCrashReport。下面记录获得奔溃信息后dysm解析过程。
1.dysm解析过的日志大概长这样,能看到崩溃产生的行数.函数等:
收集到的堆栈信息是这样的,不容易看懂
2.原始堆栈信息的解析
原始堆栈信息也可以直接用xcode提供的工具解析出来.具体步骤为:
找到xcode的symbolicatecrash工具. 在命令行中输入shell查找命令:
find /Applications/Xcode.app -name symbolicatecrash -type f
会输出symbolicatecrash工具的地址:例如:
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks /DVTFoundation.framework/symbolicatecrash
把它copy出来放到单独的文件夹里,把通过TLCrashReport得到的1.crash文件也放过来,把项目的dSYM文件也放过来:
在命令行输入:
./symbolicatecrash /Users/mac/Desktop/crash/1.crash /Users/mac/Desktop/crash/1.dSYM > Control_symbol.crash
(文件路径替换为自己的)
此时会有警告:
symbolicatecrash is deprecated; it will be removed in future releases of Xcode ⚠️
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 75.
输入:
再次执行上个命令,会生成解析成功的文件。可以查看到奔溃详情