Xcode 崩溃日志符号化

Xcode 崩溃日志符号化

符号化必备三样东西:

  • Crash Log
  • dSYM 符号集
  • symbolicatecrash 工具

Crash Log (崩溃日志)

  • 通过友盟、百度等SDK收集;

  • 使用苹果提供的Crash崩溃收集服务。

  • Xcode-Devices中直接查看某个设备的崩溃信息。

[image:DE5D2BD8-C4E8-48AB-843D-720C74C65227-1367-000008643F396C27/Devices中查看CrashLog.png]

dSYM 符号集

  • 符号集是我们对ipa文件进行打包之后,和.app文件同级的后缀名为.dSYM的文件,这个文件必须使用Xcode进行打包才有。

  • 每一个.dSYM文件都有一个UUID,和.app文件中的UUID对应,代表着是一个应用。而.dSYM文件中每一条崩溃信息也有一个单独的UUID,用来和程序的UUID进行校对。

  • 我们如果不使用.dSYM文件获取到的崩溃信息都是不准确的。

  • 符号集中存储着文件名、方法名、行号的信息,是和可执行文件的16进制函数地址对应的,通过分析崩溃的.Crash文件可以准确知道具体的崩溃信息。

我们每次Archive一个包之后,都会随之生成一个dSYM文件。每次发布一个版本,我们都需要备份这个文件,以方便以后的调试。进行崩溃信息符号化的时候,必须使用当前应用打包的电脑所生成的dSYM文件,其他电脑生成的文件可能会导致分析不准确的问题。

[image:0EE3BADB-1B1C-4BC1-9D3F-764F3B6D4953-1367-00000604A9BC6A07/Organizer查找dSYM符号集.png]

[image:071843EB-F759-4ED1-AA47-CC230A3C6C2F-1367-00000654BE1A8F62/dSYM文件.png]

在organizer中选中对应Version版本,show in Finder -> 显示包内容 -> dSYMs。
在dSYMs文件夹下可以找到dSYM符号集。

symbolicatecrash 工具

symbolicatecrash,Xcode自带的崩溃分析工具,使用这个工具可以更精确的定位崩溃所在的位置,将0x开头的地址替换为响应的代码和具体行数。

所在位置

  • Xcode 7 : /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash

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

如何符号化?

新建一个文件夹,将.crash、.dSYM、symbolicatecrash文件都放入文件夹中,在终端下进入该文件夹,输入以下命令。

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

注意替换命令中对应的文件名

如果上面命令不成功,需要使用下面命令设置一下导出的环境变量,然后重复上面解析的操作。(这一步很重要)
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

解析完成后会生成一个新的.Crash文件,这个文件中就是崩溃详细信息。图中红色标注的部分就是我们代码崩溃的部分。

[image:F3B78DF5-3119-4DC3-A652-87705ABA8AAA-1367-000007BF13D24828/符号化后文件内容.png]

注意,以下情况不会有崩溃信息产生:

  • 内存访问错误(不是野指针错误);
  • 低内存,当程序内存使用过多会造成系统低内存的问题,系统会将程序内存回收;
  • 因为某种原因触发看门狗机制;

命令行工具解析Crash文件,dSYM文件进行符号化 - 简书

iOS Crash调试和Crash符号化 - 简书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值