我想了解崩解剂这样的工具是如何运作的?
就像,他们得到崩溃日志堆栈跟踪只是在抛出和系统崩溃前几分钟? 他们访问崩溃后产生的某种崩溃转储? 在Object-C中,我们有主要的。也许在运行时附加一些代码,但他们如何处理? 我在哪里附上代码以查看此崩溃报告?
答案 0 :(得分:13)
此类服务要求您添加自己的SDK以提供崩溃报告。 SDK基本上做了两件事:
应用程序崩溃通常由其中一个触发(有例外,例如堆栈溢出错误,只能使用某些SDK支持的Mach异常处理程序检测到,或者如果应用程序被操作系统杀死,则由于一些违规行为,例如长时间阻塞主线程。)
一旦发生这些事件,SDK将尝试安全地(例如,通过不分配新内存,因为这可能造成弊大于利)获取当时的堆栈跟踪(所有)线程并将该数据安全地写入磁盘。在下一个应用程序启动时,SDK将找到该数据并尝试将其发送到服务器(希望在发生另一次崩溃之前)。
其工作方式与使用Objective-C,Swift,C,C ++无关。
操作系统还会在崩溃时生成崩溃报告,但由于该报告位于应用程序沙箱之外,因此没有第三方可以获取该报告并使用它。这就是SDK需要自己获取所有数据的原因。