什么是符号化
一般崩溃了会生成一个ips文件 但是这个文件打开一般都是十六进制内存地址的集合
而符号化就是将这些信息转化为可视化文件 符号化之后就可以显示各个线程的函数调用
比如原来是这样
Last Exception Backtrace:
0 CoreFoundation 0x1ca4cd27c 0x1ca3b5000 + 1147516
1 libobjc.A.dylib 0x1c96a79f8 0x1c96a2000 + 23032
2 CoreFoundation 0x1ca3ded94 0x1ca3b5000 + 171412
3 TestBacktrace 0x102a47464 0x102a40000 + 29796
4 UIKitCore 0x1f6c86e30 0x1f63d3000 + 9125424
符号化之后
Last Exception Backtrace:
0 CoreFoundation 0x1ca4cd27c __exceptionPreprocess + 228
1 libobjc.A.dylib 0x1c96a79f8 objc_exception_throw + 55
2 CoreFoundation 0x1ca3ded94 -[__NSSingleObjectArrayI objectAtIndex:] + 127
3 TestBacktrace 0x102a47464 -[AppDelegate Application:didFinishLaunchingWithOptions:] + 29796 (AppDelegate.m:23)
4 UIKitCore 0x1f6c86e30 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 411
然后通过TestBacktrace知道最后调用的是Application:didFinishLaunchingWithOptions 崩溃文件是AppDelegate 行号23
crashRepoter
~/Library/Application Support/CrashReporter.
在程序crash的时候会生成这个 作为一个调试工具
symbolicatecrash
symbolicatecrash主要是将crash文件和dSYM文件中的符号进行映射,即可将crash文件中的内存地址转换为可读的字符串
常规套路,先还是把*.crash文件、*.dSYM文件放到一起来,再来调用symbolicatecrash命令。先建立symbolicatecrash的软链接: