iOS 捕获程序崩溃日志

iOS 捕获程序崩溃日志,第1张

iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者

下面就介绍如何在iOS中实现:

1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的`回调动作

复制代码尺正渣 代码如下:

NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler)

官方文档介绍:Sets the top-level error-handling function where you can perform last-minute logging before the program terminates.

UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用,这跟C,C++中的回调函数的概念是一样的。

2. 实现自己陵悄的处理函数

复制代码 代码如下:

void UncaughtExceptionHandler(NSException *exception) {

NSArray *arr = [exception callStackSymbols]//得到当前调用栈信息

NSString *reason = [exception reason]//非常重清明要,就是崩溃的原因

NSString *name = [exception name]//异常类型

NSLog(@"exception type : %@ n crash reason : %@ n call stack info : %@", name, reason, arr)

}

以上代码很简单,但是带来的作用是非常大的。

当一个iOS应备宽空用程序崩溃时,系统会创建一份crash日志保存在设备上。这份crash日志记录着应用程序崩溃时的信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志例外),对于开发人员定位问题很有帮助。

这个日志里有报错是不影响使用的,详情看下面。

这个日志主要是用来提供给开发者的。  

可以忽略不急,也可以删除。

奔溃日志一般是系统出错或者某个软件出错。

这种日志一般是不会影响正常使用的,可以不用担心。

iTools--创想天空第一个核心产品,巧旅是一款简洁有着"无需越狱,即可同步"功能的苹果设备同步管理软件,也是继iTunes后全球第二款支持对iOS管理的软件。它可以让你非常方便的完成对iOS设备的管理,包括信息查看、同步媒体文件、仿瞎安装软件、备份SHSH等功能。

iTools 大大的简化了苹果用户对设备的使用,与业内同类软件相比在软件大小、资源占用、运行速度、功能完备、产品体验上都有显著的优势,并通过提供更多更深的功能让苹果用户获得更多的乐趣。

当一个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),或者自己编写一个进行自动化收集、解析和统计汇总。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12287639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存