iOS .Crash文件分析处理办法 (利用symbolicatecrash工具处理)
崩溃分析方式:命令行解析Crash文件
通过Mac自带的命令行工具解析Crash文件需要具备三个文件
- symbolicatecrash,Xcode自带的崩溃分析工具,使用这个工具可以更精确的定位崩溃所在的位置,将0x开头的地址替换为响应的代码和具体行数。
- 我们打包时产生的dSYM文件。
- 崩溃时产生的Crash文件。
1、获取.crash文件
获取崩溃信息方式:
- 使用友盟、蒲公英等第三方崩溃统计工具。->iOS 友盟第三方崩溃统计的解析-dSYM
- 自己实现应用内崩溃收集,并上传服务器。
- Xcode-Devices中直接查看某个设备的崩溃信息。
- 使用苹果提供的Crash崩溃收集服务。
这篇文章先只用第四个方式-审核被拒给我的.crash文件,其他方式以后讨论。
2、获取 .app 和 .app.dSYM 文件
2.1、步骤:
1、Xcode-Window-Organize找到要检查的对应Archives找到App-右击-Show in Finder
2、右击 .xcarchive 文件-显示包内容
3、分别复制dSYMs文件夹下的 **.app.dSYM 文件和 Products->Applications文件夹下的 app文件放入 .crash 文件所在的crash文件夹中(文件夹自己建的)。
2.2、dSYM 符号集介绍:
- 符号集是我们对ipa文件进行打包之后,和.app文件同级的后缀名为.dSYM的文件,这个文件必须使用Xcode进行打包才有。
- 每一个.dSYM文件都有一个UUID,和.app文件中的UUID对应,代表着是一个应用。而.dSYM文件中每一条崩溃信息也有一个单独的UUID,用来和程序的UUID进行校对。
- 我们如果不使用.dSYM文件获取到的崩溃信息都是不准确的。
- 符号集中存储着文件名、方法名、行号的信息,是和可执行文件的16进制函数地址对应的,通过分析崩溃的.Crash文件可以准确知道具体的崩溃信息。
当程序崩溃的时候,我们可以获得到崩溃的错误堆栈,但是这个错误堆栈都是0x开头的16进制地址,需要我们使用Xcode自带的symbolicatecrash工具来将.Crash和.dSYM文件进行符号化,就可以得到详细崩溃的信息。
3、获取symbolicatecrash工具
1、打开终端输入以下命令:
find /Applications/Xcode.app -name symbolicatecrash -type f
我找到的是:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
2、用命令将symbolicatecrash拷贝到桌面的crash文件夹里面,与.app和.app.dSYM放一起
cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/***/Desktop/crash
4、开始命令行解析Crash文件
1、打开终端用命令切换到桌面的crash目录下:
cd /Users/***/Desktop/crash
2、执行命令
./symbolicatecrash /Users/***/Desktop/crash/*.crash /Users/***/Desktop/crash/*.app.dSYM > jieguo.crash
2.1、 如果上面命令不成功,需要使用下面命令设置一下导出的环境变量,然后重复上面解析的操作。
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
3、解析完成后会生成一个新的.Crash文件,这个文件中就是崩溃详细信息。


使用友盟、蒲公英等第三方崩溃统计工具获取的信息可以用如下方式解析iOS 友盟第三方崩溃统计的解析-dSYM
iOS .Crash文件分析处理办法 (利用symbolicatecrash工具处理)的更多相关文章
- [转][iOS Crash文件分析]-如何使用symbolicatecrash工具
上传一软件,被拒了,自己测试了n遍都未出现这个情况,今天用symbolicatecrash工具分析了一下苹果提供的Crash文件,最终查到是 - (void)mapView:(MKMapView *) ...
- 苹果审核返回崩溃日志 iOS .crash文件处理 symbolicatecrash. 困扰我多年的牛皮癣根治了 看到这篇文章拿过来用下
AppStore审核被拒,返回crashLog.txt文件,可是打开后都是十六进制的地址,我们可以使用Xcode自带的 symbolicatecrash 解析得到我们需要的详细崩溃信息crashLog ...
- iOS 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)
时间2013-08-20 12:49:20 GoWhich原文 http://www.gowhich.com/blog/view/id/343 苹果官方 Crash文件分析方法 (iOS系统Cras ...
- (转载)iOS系统Crash文件分析方法
转自: http://ios-iphone.diandian.com/post/2012-05-18/19440182 Xcode 4.3的symbolicatecrash的位置和老版本的不一致了. ...
- iOS crash日志分析
iOS crash日志分析 一. 寻找crash文件:手机崩溃后的ips或者crash文件(ips文件可以直接修改成crash文件,直接改后缀名就可以了),这里说下如何拿到crash文件 1. 把运行 ...
- iOS: Crash文件解析(一)
iOS Crash文件的解析(一) 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退.脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断. ...
- iOS Crash文件的解析
iOS Crash文件的解析 开发程序的过程中不管我们已经如何小心,总是会在不经意间遇到程序闪退.脑补一下当你在一群人面前自信的拿着你的App做功能预演的时候,流畅的操作被无情地Crash打断.联想起 ...
- 【转】 分析iOS Crash文件:符号化iOS Crash文件的3种方法
当你的应用提交到AppStore或者各个渠道之后,请问你多久会拿到crash文件?你如何分析crash文件的呢? 上传crash文件 你的应用应当有模块能够在应用程序crash的时候上传crash信息 ...
- 分析iOS Crash文件:符号化iOS Crash文件的3种方法
转自:http://www.cocoachina.com/industry/20140514/8418.html 转自wufawei的博客 当你的应用提交到App Store或者各个渠道之后,请问你多 ...
随机推荐
- hdu1074
#include <iostream> #include <string> #include <cstring> #include <stack> #i ...
- SuperSocket框架中BinaryRequestInfo协议的使用
一.开发环境 1.Windows 10 企业版 64位 2.Microsoft Visual Studio 2017 企业版 二.项目开始 1.新建控制台程序,项目名称“BinarySuperSock ...
- [Python] 利用Python做定时任务, 及时了解互联网动态
前言 本人因为比较喜欢看漫画和动漫, 所以总会遇到一些问题, 因为订阅的漫画或者动漫太多, 总会忘记自己看到那一章节或者不知道什么时候更新. 故会有这么一个需求, 想记录自己想看的漫画或动画并在其更新 ...
- PAT L2-014【二分】
思路: 最后发现对当前列车比我大的编号的栈有没有就好了,所以开个vector存一下,然后二分一下vector找一下第一个比我大的数就好了 #include <bits/stdc++.h> ...
- Mybatis学习笔记之一——牛刀小试
1.Mybaits核心对象SqlSession的作用: (1)向SQL语句传入参数: (2)执行SQl语句: (3)获取执行SQL语句的结果: (4)事务的控制: 2.核心配置文件(Configrat ...
- nginx 服务器并发优化
apache 提供的 ab 可以对服务器进行压力测试, 安装 ab: apt-get install apache2-utils 安装完后,ab 在目录 /usr/bin/ 下的. 执行: ab ...
- uva 1615 高速公路(贪心,区间问题)
uva 1615 高速公路(贪心,区间问题) 给定平面上n个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里得距离不超过D.(n<=1e5) 对于每个 ...
- heap 堆
实现了交换.向上维护,向下维护的原子功能,其它插入.删除.修改的功能应该不在话下. 于是有了代码:(luogu3378模板题) // luogu-judger-enable-o2 #include & ...
- 洛谷P1896 [SCOI2005]互不侵犯King
P1896 [SCOI2005]互不侵犯King 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共 ...
- MySQL 逻辑备份mysqldump&mysqlpump&mydumper原理解析
目录 准备 mysqldump备份 mysqlpump备份 mydumper备份 想弄清除逻辑备份的原理,最好的办法是开启general_log,一探究竟 准备 创建用户 CREATE USER IF ...