iOS获取用户设备崩溃日志并分析
项目最近发布,部分用户在内侧使用,正好遇到一些问题,由于用户在其他城市,所以对于用户设备产生的崩溃日志,不好直接拿设备连接电脑。
对于已发布的项目,若要收集崩溃日志,我们可借助于第三方工具,如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获取用户设备崩溃日志并分析的更多相关文章
- iOS - 捕获应用程序崩溃日志
作为一名iOS移动应用开发者,为了确保你的应用程序正确无误,在将应用程序提交到应用商店之前,你必定会进行大量的测试工作:而且在你测试的过程中应用程序运行的很好,但是在应用商店上线之后,还是有用户抱怨应 ...
- iOS 中捕获程序崩溃日志
iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59) 转载▼ iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下 ...
- IOS 获取最新设备型号方法
1.IOS 获取最新设备型号方法列表最新对照表:http://theiphonewiki.com/wiki/Models方法: #import "sys/utsname.h” struct ...
- Python学习---Django的request扩展[获取用户设备信息]
关于Django的request扩展[获取用户设备信息] settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] STATICFILES_DIRS ...
- iOS开发-捕获程序崩溃日志
iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下面就介绍如何在iOS中实现: 1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时 ...
- iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59)
http://blog.sina.com.cn/s/blog_b71d24920101ky2d.html iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软 ...
- iOS 获取用户授权的用户隐私保护-地图定位
获取用户授权的用户隐私保护地图定位示例://导入定位框架#import<CoreLocation/CoreLocation.h>@interfaceViewController()< ...
- ios 获取当前设备信息、内存
//在[UIDevice currentDevice]中的属性 @property(nonatomic,readonly,strong) NSString *name; // e.g. "M ...
- IOS获取手机设备型号
最新型号的设备列表https://www.theiphonewiki.com/wiki/Models #import "iosutils/IOSUtils.h" #import & ...
随机推荐
- 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件
今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...
- laravel如何向视图传递变量的方法
第一种: public function about(){ $name = "cai" return view("sites.about")->with( ...
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明
php有一款插件叫做imagemagick,功能很强大,提供了图片的很多操作,图片剪切.压缩.合并.插入文本.背景色透明等.并且有api方法调用和命令行操作两种方式,如果只是简单处理的话建议api方法 ...
- Codeforces Round #371 (Div. 2) 转换数字
C. Sonya and Queries time limit per test 1 second memory limit per test 256 megabytes input standard ...
- JavaWeb 后端 <十四> 文件上传下载
1.文件上传与下载 案例: 注册表单/保存商品等相关模块! --à 注册选择头像 / 商品图片 (数据库:存储图片路径 / 图片保存到服务器中指定的目录) 1.1 文件上传 文件上传,要点: 前台: ...
- App的前后台数据同步
前言 在开发一个点餐软件时,app的订单数据是使用本地Sqlite数据库,在提交订单数据后,当订单数据在后台(Mysql数据库)发生变化时(如:已买单),本地数据如何改变呢? 思路 前台在查询时,将后 ...
- Struts2框架05 result标签的类型
1 result标签是干什么的 就是结果,服务器处理完返回给浏览器的结果:是一个输出结果数据的组件 2 什么时候需要指定result标签的类型 把要输出的结果数据按照我们指定的数据类型进行处理 3 常 ...
- mysql表生成JavaBean
MySQLToBean.java package org.just.util; import java.io.File; import java.io.FileInputStream; import ...
- linux下查看jdk路径
jdk安装后 centos中: 执行 rpm -ql java-1.7.0-openjdk-devel | grep '/bin/javac' 命令确定, 执行后会输出一个路径,除去路径末尾的 &qu ...
- UVA - 1639 -Candy
题目链接:https://vjudge.net/problem/UVA-1639 题目大意: 有两个糖果盒,每个盒子里面有n个糖果,每天随机选一个(概率分别为p,1-p),然后吃一颗糖.直到有一天,打 ...