iOS Swift5 收集Crash日志

网上教程不少,坑也不少,经过不懈努力,终于让我把crash日志打印在了手机屏幕上。

看到这篇文章的朋友,应该看了不少其他资料,我先直接说我踩的几点坑,可能会直接的帮助到你:

1.   swift语言的崩溃无法通过NSSetUncaughtExceptionHandler捕获,因为NSSetUncaughtExceptionHandler只捕获OC代码的崩溃,例如可以捕获NSArray数组越界崩溃,却无法捕获Array的数组越界崩溃

2.   swift的崩溃是通过signal来接收的,在xcode11,和swift5 的环境下是可以接收到崩溃信号的。但是,必须真机运行,而且不能联调,这点非常关键,因为经过测试发现,崩溃后,联调的断点永远都不会触发,因为联调无法终止程序,signal也不会发送,导致carsh日志并没有被记录下来。所以,联调安装后,点击app运行崩溃后,再次打开才可以看到保存起来的崩溃日志(没保存到本地,将无法看到崩溃日志)

3.线上AppStore记录的crash日志是经过符号化的,所以需要保存好每个提交到appStroe的包,重点是里面的dsym文件。


接下来是代码部分

1.在didFinishLaunchingWithOptions里面调用此方法

注册信号

2.当崩溃的时候会调用signalHandler方法,保存崩溃

保存崩溃

3.在didFinishLaunchingWithOptions的时候获取崩溃信息,调用以下方法,再次打开就可以看到崩溃信息


获取崩溃日志

只是讲解了一些思路,具体还是看别人的demo吧。

下面附上Demo链接:

感谢大大的Demo

你可能感兴趣的:(iOS Swift5 收集Crash日志)