2019-04-08 16:23:19 CodingFire 阅读数 342

如果你在打的包中找不到dSYM文件,不要慌,一招教你解决:
在build setting中输入debug,找到Debug Information Format这一项,你会在它下面看到Debug和Release两个子选项,打包属于release,看看release后面是不是显示DWARF,选中这一项,切换到DWARF with dSYM File后重新打包就有这个文件了。

2018-04-16 11:15:41 silencewy_l 阅读数 3422

通过http://www.cocoachina.com/ios/20100427/1222.html 这篇文章,结合自己日常工作的理解,提炼了一下主要内容


一、dsym是什么?

在XCODE编译项目之后,会在app旁看见一个同名的dSYM文件.(rd称之为 符号文件)
他是一个编译的中转文件,简单说就是debug的symbols包含在这个文件中.

二、dsym有什么作用?

当release的版本 crash的时候,会有一个日志文件,包含出错的内存地址, 使用symbolicatecrash工具能够把日志和dSYM文件转换成可以阅读的log信息,

也就是将内存地址,转换成程序里的函数或变量和所属于的 文件名.

简单的说,就是当ios发生线上crash的时候,可以利用发版包对应的符号文件(dsym)来方便追查问题。

三、dsym我们可以在哪得到?

1、ios确定下来将要发版的最终版本后,我们可以在jenkins上把对应的dsym文件保存起来

2、可以发现crash后去jenkins上找(注意 时间、企业包是否为发版包)


2016-04-15 13:01:47 wwwwwwwwwwwwdi 阅读数 566

前段时间,项目重构完成,模块添加完毕,然后欣喜的准备上线。然后。就出现了下图的情景。


app只支持iPhone,不支持iPad,然后,悲剧原因都会有一个2.10

iPhone Apps must also run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS resolution(iPhone应用必须可以无条件运行在iPad上,支持普通iPhone分辨率和2倍iPhone 3GS分辨率。)

在iPad上运行崩溃。。

然而,由于本人没有iPad真机,所以在模拟器上调试,鼠标都点碎了,然而,还是找不到问题。。

只想求我心里阴影面积。。。

跟苹果工程师屡次交涉,甚至发邮件说我app不支持iPad,让其不要使用iPad测试,然而,并没有什么卵用。。

仍然悲剧。。

然后,悲剧邮件里边都会有crash Log,类似于这种样子的东西



然而。并不能看的懂。。。(本人菜鸟)

然后上网上查询 发现这个东西 是手机搜集的崩溃LOG信息

本地crashLog获取方法:

1.手机连接Mac

2.Xcode中 command+shift+2 ,选择对应的手机。 “ViewDeviceLog”. 就可以看到,如果有需要,可以自行导出


这是能拿到崩溃设备的前提下

但是,如果app上线之后用户安装了之后又产生的崩溃怎么才能知道呢。

这里可以,搜集崩溃信息

崩溃信息.crash 获取方式

下面列举一些我们常用的崩溃分析方式:

  • 使用友盟、云测、百度等第三方崩溃统计工具。
  • 自己实现应用内崩溃收集,并上传服务器。
  • Xcode-Devices中直接查看某个设备的崩溃信息。
  • 使用苹果提供的Crash崩溃收集服务。
推荐第一种,使用第三方的统计SDK,集成方便,使用简单(以前项目中集成过友盟的统计)

然后这里不再赘述上面描述的情景,主要针对打包提交之后反馈回来的崩溃信息的解析


开始今天的主角:dSYM


不知道大家有没有注意过,在使用Xcode打包上传的时候,都会对应的生成一个xxx.app.dSYM文件 (xxx指项目名)

大家一定切记保存好这些文件, 以备以后通过.crash文件 来符号化 找到崩溃的代码行数

所以我们需要以下三个文件。

1>symbolicatecrash

2>xxx.crash

3>xxx.app.dSYM

note:确保文件的UUID相同,这样才能符号化解析出来。否则不能解析


.dSYM的取得

1.Xcode — organizer — Archive 

2.选择相应版本,右键,showInFinder

3.显示包内容。

4.里边有个dSYMs文件夹,选择xxx.app.dSYM


或者Finder内前往路径

~/Library/Developer/Xcode/Archives


symbolicatecrash取得

Xcode自带的有symbolicatecrash工具,可以符号化 .crash 文件的崩溃信息,定位问题代码。

关于symbolicatecrash 的路径(以Xcode7.3为例,别的Xcode版本路径不同,请自行百度Google)。

打开终端。输入下面路径可以找到。

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

找到之后,桌面创建一个文件夹crashLog, copy symbolicatecrash ,crash文件,dSYM文件到桌面文件夹

终端命令:

cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/xxx/Desktop/crashLog/  

(xxx指的是你Mac的名称)


然后cd到桌面crash文件夹

cd Desktop/

cd crashLog/


tips:

查看一下环境变量

xcode-select -print-path

返回结果应该是

/Applications/Xcode.app/Contents/Developer/
如果不是,则需要使用下面命令设置一下导出的环境变量

export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
使用命令解析Crash文件,*号指的是具体的文件名

./symbolicatecrash ./xxxx.crash ./*.app.dSYM > symbol.crash


这样,你就会在crashLog文件夹里发现一个 symbol.crash的文件,重新打开。你就会发现,符号化crash文档就完成了。我们就可以成功定位到问题所在了。


生成.dsYM文件

阅读数 342

没有更多推荐了,返回首页