2024-04-26 08:20:25
当一个iOS应用程序崩溃时,系统会创建一份crash日志保存在设备上。crash日志记录着应用程序崩溃信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志例外),对于开发人员定位问题很有帮助。
如果设备就在身边,可以连接设备,打开Xcode - Window - Organizer,在左侧面板选择Device Logs(可以选择具体设备Device Logs或者Library下所有设备Device Logs)。然后根据时间排序查看crash日志。这是开发、测试阶段常用的方式。
如果应用程序已经提交App Store发布,用户已经安装使用,那么开发者可以通过iTunes Connect(Manage Your Applications - View Details - Crash Reports)获取用户crash日志。不过大多数发者并不依赖于此。因为这需要用户设备上同意上传相关信息。考虑并不是所有iPhone用户都允许发送诊断报告(crash日志),而且对于部分提交Apple的crash日志,开发者需要手动拉取,然后找到对应符号文件进行解析——这是一件繁琐的事情。所以实际项目中,通常接入现有的crash收集工具,或者自己编写一个进行自动化收集、解析和统计汇总。
一、如何获得crash日志
当一个iOS应用程序崩溃时,系统会创建一份crash日志保存在设备上。这份crash日志记录着应用程序崩溃时的信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志例外),对于开发人员定位问题很有帮助。
如果设备就在身边,可以连接设备,打开Xcode - Window - Organizer,在左侧面板中选择Device
Logs(可以选择具体设备的Device Logs或者Library下所有设备的Device
Logs),然后根据时间排序查看设备上的crash日志。这是开发、测试阶段最经常采用的方式。
如果应用程序已经提交到App Store发布,用户已经安装使用了,那么开发者可以通过iTunes Connect(Manage Your
Applications - View Details - Crash
Reports)获取用户的crash日志。不过这并不是100%有效的,而且大多数开发者并不依赖于此,因为这需要用户设备同意上传相关信息,详情可参见iOS:
Providing Apple with diagnostics and usage information摘要。
考虑到并不是所有iPhone用户都允许自动发送诊断报告(crash日志),而且对于部分提交到Apple得crash日志,开发者还需要手动去拉取,然后找到对应的符号文件进行解析——这是一件很繁琐的事情。所以实际项目开发中,通常接入现有的crash收集工具(参考1,参考2),或者自己编写一个进行自动化收集、解析和统计汇总。