分析iOS Crash文件

原创 2016年06月01日 14:44:32

转自wufawei的博客http://wufawei.com/2014/03/symbolicating-ios-crash-logs/

当你的应用提交到App Store或者各个渠道之后,请问你多久会拿到crash文件?你如何分析crash文件的呢?

上传crash文件
你的应用应当有模块能够在应用程序crash的时候上传crash信息。 要么通过用户反馈拿到crash文件,要么借助自己或第3方的crash上传模块拿到crash文件。

今天要分析的场景是你拿到用户的.crash文件之后,如何符合化crash文件(Symbolicating crash logs)的3种方法。帮助尽快找到crash原因。

crash文件例子
crash文件的部分内容:
Last Exception Backtrace:
0 CoreFoundation 0x30acaf46 exceptionPreprocess + 126
1 libobjc.A.dylib 0x3af0b6aa objc_exception_throw + 34
2 CoreFoundation 0x30a0152e -[__NSArrayM objectAtIndex:] + 226
3 appName 0x000f462a 0x4000 + 984618
4 appName 0x00352aee 0x4000 + 3468014

18 appName 0x00009404 0x4000 + 21508

大家一眼就能看到:
2 CoreFoundation 0x30a0152e -[__NSArrayM objectAtIndex:] + 226

这一行有问题。

但是,第3行和第4行的:
3 appName 0x000f462a 0x4000 + 984618
4 appName 0x00352aee 0x4000 + 3468014

并没有指出到底是app的那个模块导致的问题,如何排查呢?

有如下3种方法

方法1 使用XCode
这种方法可能是最容易的方法了。

需要使用Xcode符号化 crash log,你需要下面所列的3个文件:
1. crash报告(.crash文件)
2. 符号文件 (.dsymb文件)
3. 应用程序文件 (appName.app文件,把IPA文件后缀改为zip,然后解压,Payload目录下的appName.app文件), 这里的appName是你的应用程序的名称。

把这3个文件放到同一个目录下,打开Xcode的Window菜单下的organizer,然后点击Devices tab,然后选中左边的Device Logs。

然后把.crash文件拖到Device Logs或者选择下面的import导入.crash文件。

这样你就可以看到crash的详细log了。 如下图:

方法2 使用命令行工具symbolicatecrash
有时候Xcode不能够很好的符号化crash文件。我们这里介绍如何通过symbolicatecrash来手动符号化crash log。

在处理之前,请依然将“.app“, “.dSYM”和 “.crash”文件放到同一个目录下。现在打开终端(Terminal)然后输入如下的命令:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

然后输入命令:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash appName.crash appName.app > appName.log

现在,符号化的crash log就保存在appName.log中了。

方法3 使用命令行工具atos
如果你有多个“.ipa”文件,多个”.dSYMB”文件,你并不太确定到底“dSYMB”文件对应哪个”.ipa”文件,那么,这个方法就非常适合你。

特别当你的应用发布到多个渠道的时候,你需要对不同渠道的crash文件,写一个自动化的分析脚本的时候,这个方法就极其有用。

这里先介绍一个概念:UUID

什么是UUID
每一个可执行程序都有一个build UUID来唯一标识。Crash日志包含发生crash的这个应用(app)的 build UUID以及crash发生的时候,应用加载的所有库文件的[build UUID]。

那如何知道crash文件的UUID呢?

可以用:
grep “appName armv” *crash

或者
grep –after-context=2 “Binary Images:” *crash

可以得到类似如下的结果:
appName.crash-0x4000 - 0x9e7fff appName armv7 <8bdeaf1a0b233ac199728c2a0ebb4165> /var/mobile/Applications/A0F8AB29-35D1-4E6E-84E2-954DE7D21CA1/appName.crash.app/appName

(请注意这里的0x4000,是模块的加载地址,后面用atos的时候会用到)

如何找到app的UUID
可以使用命令:
xcrun dwarfdump -–uuid

版权声明:本文为博主原创文章,未经博主允许不得转载。

分析iOS Crash文件:符号化iOS Crash文件的3种方法

文章转载自:http://wufawei.com/2014/03/symbolicating-ios-crash-logs/ HOMEABOUTGUESTBOOKCATEGO...
  • chaoyuan899
  • chaoyuan899
  • 2014年03月24日 09:39
  • 5305

iOS .Crash文件分析处理办法 -symbolicatecrash

iOS .Crash文件分析处理办法 -symbolicatecrash
  • safiri
  • safiri
  • 2016年07月06日 17:27
  • 784

iOS Crash文件的解析(二)如何使用symbolicatecrash工具

上传一软件,被拒了,自己测试了n遍都未出现这个情况,今天用symbolicatecrash工具分析了一下苹果提供的Crash文件,最终查到是 - (void)mapView:(MKMapView *...
  • leikezhu1981
  • leikezhu1981
  • 2015年05月07日 22:16
  • 3352

iOS .ips(crash)崩溃报告文件分析

对于我们iOS开发者来说,最心碎的事莫过于苹果审核一个星期后上架app store,而第二天就报出闪退bug。   iOS app的所有崩溃记录都会记录在设备上,所以对于和我一样没有集成...
  • FocusOnLovingFreedom
  • FocusOnLovingFreedom
  • 2017年06月13日 15:59
  • 526

iOS Crash文件分析(二)

Crash文件分析:符号化iOS Crash文件的3种方法 有如下3种方法   方法1 使用XCode 这种方法可能是最容易的方法了。   需要使用Xcode符号化 crash log...
  • xy_26207005
  • xy_26207005
  • 2016年05月03日 15:13
  • 1920

iOS crash报告符号化,.ips文件分析

项目中一部分测试是外包的,测试人员发现了一个偶现的bug,并把.ips文件提供给我们。 下面开始解析crash文件 1.在桌面新建一个文件夹,名字叫crash 2.将.ips文件更名为.cras...
  • rainbowFactory
  • rainbowFactory
  • 2017年06月16日 16:07
  • 1322

通过dSYM和app文件分析Crash

一. 验证xxx.crash、xxx.app和xxx.dSYM的uuid是否一致 验证方法: 1)查看xxx.app的uuid       dwarfdump --uuid xxx.app/xxx...
  • sharpyl
  • sharpyl
  • 2015年12月04日 17:17
  • 1390

iOS通过dSYM文件分析crash

http://blog.csdn.net/hjy_x/article/details/20929095 我们在ios开发中会碰到的很多crash问题,如果Debug调试模式的话,我们...
  • openglnewbee
  • openglnewbee
  • 2014年08月25日 18:07
  • 24145

iOS利用dSYM文件解析crash日志

拿到crash之后大概是这个样子的 这个时候我们就需要进行解析。这里我介绍的是用symbolicatecrash进行解析。 首先是查找 symbolicatecrash所在的位置。我们需要打开终端...
  • jsjxiaobing
  • jsjxiaobing
  • 2016年04月27日 21:02
  • 1579

ios crash文件分析

IOS程序在真机运行程序出现crash状况时,机器会自动产生log文件,它包含了在程序crash之前的运行逻辑,分析carsh文件,有效的解决程序在真机上的问题,保证程序良好的稳定性,但是这个cras...
  • yuquan0821
  • yuquan0821
  • 2013年08月17日 11:30
  • 10943
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:分析iOS Crash文件
举报原因:
原因补充:

(最多只允许输入30个字)