项目最近发布,部分用户在内侧使用,正好遇到一些问题,由于用户在其他城市,所以对于用户设备产生的崩溃日志,不好直接拿设备连接电脑。

对于已发布的项目,若要收集崩溃日志,我们可借助于第三方工具,如Bugly、友盟等,或者苹果自己提供的一个SDK函数:NSSetUncaughtExceptionHandler 用来做异常处理,然后发送到自己服务器。

那么,如果我们都没有做这两步,该如何处理呢?其实我们可以让用户自己收集给我们。

步骤如下:

1、引导用户开启iOS设备设置->隐私->分析

这几个都开启一下,目的是允许系统设备自己记录和上传APP应用的崩溃日志数据。

2、点击上图的【分析数据】,会看到一个列表,里面记录了设备上所有应用的日志,找到我们自己的应用,获取到崩溃日志。

关于如何获取崩溃日志:

我摘了两段网上的话

1、当用户抱怨闪退时,你可以要求他让设备与iTunes同步,设备与电脑上的iTunes Store同步后,会将崩溃日志保存在电脑上(路径:Mac OS X:~/Library/Logs/CrashReporter/MobileDevice/)到上述位置把崩溃日志下载下来,然后通过电子邮件发送给你;用这个方法获取崩溃日志时,你必需尽量获取用户设备生成的所有崩溃日志。因为崩溃日志越多,就越容易诊断问题所在

2、应用提交到App Store后,你也能从 iTunes Connect 获取到用户的崩溃日志,登录到 iTunes Connect 上,选择 Manage Your Applications, 点击相应的应用,点击应用图标下面的View Details按钮, 然后点击右栏Links部分的 Crash Reports;如果没有崩溃日志,试试点击Refresh按钮刷新一下。如果你的应用用户量还不多,或者刚上架不久,iTunes Connect账号上也可能还没有任何崩溃日志;如果有的话你就会看到不同iOS版本用户下的崩溃信息。

3、当我们得到这个崩溃日志文件后,我们是看不懂的,原因是没有经过符号化

下面我们可以这样做:

a、桌面新建一个文件夹,把刚才的文件放进去

b、一般我们得到的这个文件都是以.ips后缀结尾,我们先修改后缀为.crash

c、打开如下路径,获取symbolicatecrash,并放到a中的文件夹

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources

d、打开Xcode,到Organizer下面,获取你发布商店的Archives版本,show in finder 找到 .dsYM文件,同理放到a中的文件夹

e、现在我们得到如下内容:一共3个文件

f、最后一步,进行符号化解析

打开终端,cd到a的文件夹路径

【./symbolicatecrash】 【.crash文件路径】 【.dSYM文件路径】 【> log.crash】

记得每个之间有个空格,一共4部分组成。最后得到的符号化文件就是 log.crash。

比如我的路径是这样:

./symbolicatecrash /Users/MACBOOK/Desktop/符号化/k12_sl_iOS----.crash /Users/MACBOOK/Desktop/符号化/k12_sl_iOS.app.dSYM > log.crash

结果如下:

打开log.crash ,我们就能看到具体内容了,错误崩溃定位的代码语句都是有的。

提示:这些引起崩溃代码一般都在文件前面部分。

至于文件里的内容分布,这里我就不讲解了,大家有兴趣网上搜一下都有的。

enjoy~

iOS获取用户设备崩溃日志并分析的更多相关文章

  1. iOS - 捕获应用程序崩溃日志

    作为一名iOS移动应用开发者,为了确保你的应用程序正确无误,在将应用程序提交到应用商店之前,你必定会进行大量的测试工作:而且在你测试的过程中应用程序运行的很好,但是在应用商店上线之后,还是有用户抱怨应 ...

  2. iOS 中捕获程序崩溃日志

    iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59) 转载▼     iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下 ...

  3. IOS 获取最新设备型号方法

    1.IOS 获取最新设备型号方法列表最新对照表:http://theiphonewiki.com/wiki/Models方法: #import "sys/utsname.h” struct ...

  4. Python学习---Django的request扩展[获取用户设备信息]

    关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...

  5. iOS开发-捕获程序崩溃日志

    iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下面就介绍如何在iOS中实现: 1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时 ...

  6. iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59)

    http://blog.sina.com.cn/s/blog_b71d24920101ky2d.html iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软 ...

  7. iOS 获取用户授权的用户隐私保护-地图定位

    获取用户授权的用户隐私保护地图定位示例://导入定位框架#import<CoreLocation/CoreLocation.h>@interfaceViewController()< ...

  8. ios 获取当前设备信息、内存

    //在[UIDevice currentDevice]中的属性 @property(nonatomic,readonly,strong) NSString *name; // e.g. "M ...

  9. IOS获取手机设备型号

    最新型号的设备列表https://www.theiphonewiki.com/wiki/Models #import "iosutils/IOSUtils.h" #import & ...

随机推荐

  1. Generic(泛型)

    什么是泛型:"通过参数化类型来实现在同一份代码上操作多种数据类型.利用"参数化类型"将类型抽象化,从而实现灵活的复用". 简单来说泛型就是为了使一些代码能够重复 ...

  2. 5.Smart使用内置函数或者自定义函数

    1.使用内置函数 例如使用date函数 {"Y-m-d"|date:$time}格式{第一个参数|方法:第二个参数:第三个参数}即可转换成 2016-07-19  2.使用resi ...

  3. css画三角形,梯形

    (根据调节边框的宽度来调节三角形形状) <!DOCTYPE html> <html> <head> <meta http-equiv="Conten ...

  4. java变量的分类与初始化

    2017/6/25 首先学习java最权威的就是官方的文档了,今天从头读了文档,把一些小细节理清楚. 变量 Java语言里的变量分以下4类: 1. Instance Variables: (Non-S ...

  5. pl_sql develope连接远程数据库的方法

    需要修改你所安装的数据的路径下 tnsnames.ora 文件(我安装路径是F:\app\Aside\product\11.2.0\dbhome_1\NETWORK\ADMIN) tnsnames.o ...

  6. 使用hexdump工具追踪EXT4文件系统中的一个文件

    昨天追踪EXT4文件系统的过程中出了点问题,就是找不到文件,于是试了一下追踪FAT32文件系统的,成功之后有了点信心,今天继续嗑EXT4文件系统,终于找到啦,记录一下. 操作系统:linux(cent ...

  7. Linux配置虚拟地址

    立即生效: [root@server ~]$ 192.168.1.101 broadcast 192.168.1.255 netmask 255.255.255.0 up [root@server ~ ...

  8. Unity3D-Shader-实现X光效果

    [旧博客转移 - 2016年1月3日 16:40 ] 最近学习了一些Shader效果,打算把学到的知识总结一下,这篇讲一下这种轮廓发光的效果(如下图所示),也有一些地方管这个叫X光     1.原理 ...

  9. vb编程代码大全

    数值型函数:abs(num): 返回绝对值sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负hex(num): 返回十六进制值 直接表示:&Hx ...

  10. [Hadoop源码系列] FairScheduler分配申请和分配container的过程

    1.如何申请资源 1.1 如何启动AM并申请资源 1.1.1 如何启动AM val yarnClient = YarnClient.createYarnClient setupCredentials( ...