今天突然发现了一个解析iOS crash log的好方法,忍不住来分享一下。

相信每个做iOS开发的TX都应该不会对symbolicatecrash陌生,我们第一次遇到真机上产生的崩溃日志时,在网上搜到的大部分教程都告诉我们说要用symbolicatecrash来解析crash log,我信了,所以相当长一段时间内,我都是用这个工具来解析crash log的。

每次都去敲命令来解析crash log本身就是一件很蛋疼的事情,但这还不是麻烦的,最麻烦的是用symbolicatecrash还经常遇到问题:怎么crash log又解析失败了?怎么批量解析crash log?

问题出在方法上,实际上我们完全用不着symbolicatecrash的,因为Xcode中自带的organizer就是很好的解析crash log工具了。

举个例子,如果我们的应用是在自己的机器上编译生成的,把应用装在真机上如果有崩溃产生,把真机通过数据线连接到Mac电脑上,打开Xcode菜单上的Window——Organizer,找到设备的device logs项中的crash log,稍等片刻,你就会发现这里的crash log已经被自动解析过了(大部分情况会自动解析,如果不行请右键点击选择Re-Sysbomlicate)。

但是如果应用不是在自己的编译上生成的,你会发现organizer不会自动解析crash log(除了系统函数)。怎么在这种情况下也让organizer也能自动解析crash log呢?

其实之前的organizer之所以能自动解析你设备上的crash log,是因为它能根据spotlight的索引来找到对应的.app和dSYM文件,对于这一点,我的猜测是在自己的Mac电脑上编译生成应用时,系统自动对其进行了索引。这个索引应该是根据app uuid来索引的。这个uuid可以执行下面的命令得到:

dwarfdump —uuid YourApp.app/YourApp 
dwarfdump —uuid YourApp.app.dSYM

如果要能解析出crash log,crash log中携带的uuid与dSYM文件的uuid必须与app uuid一致。

既然spotlight能自动进行索引,那是不是也可以手动进行索引呢?答案是能,这正是自动解析的关键。手动索引的命令是mdimport。比如,把iOS应用的.app和.dSYM文件放到一个文件夹中,执行命令mdimport foldername就可以。命令执行完成后再用刚才的organizer去查看crash log,你会发现也能自动解析了。

这意味着什么呢?意味着你把应用所有版本的.app和.dSYM文件放入一个专门的文件夹中,只要mdimpor这个文件夹,以后的organizer就能自动解析出你所有的crash log。

好处不仅仅是这一点。organizer还有一个import功能,借助这个功能,我们可以把其它Mac电脑上的crash log导入到自己电脑中的organizer,然后就可以自动解析。更好的是,用这个功能可以批量导入收集到的crash log,然后我们就可以批量解析所有的crash log。

比起用symbolicatecrash,这种方法简便了许多,从现在起,你可以抛弃symbolicatecrash了。但其实这还不是最好的方法,目前先进的方法是用crash report管理系统来管理所有的crash,比如使用QuincyKit, Crashlytics, Flurry等来进行管理,有时间自己也研究研究。

Posted by wonderffee Aug 14th, 2013

原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

转载于:https://www.cnblogs.com/max5945/p/3663966.html

别用symbolicatecrash来解析crash Log了相关推荐

  1. 两个输出文件名解析为同一输出路径_解析 crash log(一)

    前言 在负责的产品中有最近一段时间有极个别用户老是反馈有偶尔闪退的情况,而且就这几个用户反复出现,其它用户,甚至就坐在他边上的用户进行了一样的操作都没有任何问题. 刚开始丢了个重现构建的新包给这几位用 ...

  2. 解析app出现闪退,解析.crash文件

    原文参考: http://www.cnblogs.com/easy-coding/p/3656685.html http://www.cnblogs.com/smileEvday/p/Crash1.h ...

  3. Xcode自带工具symbolicatecrash解析Crash文件

    项目中遇到一台手机运行测试包闪退的现象,而且是一个设备闪退其他设备没有再现的情况 可以看到Crash信息,但是指定的问题给出的是16进制内存地址,根本无法定位问题发生在哪个类的哪个函数中 所以需要解析 ...

  4. iOS 几种常用的 crash log 崩溃信息调试方法. (转载)

    前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1 ...

  5. ios设备的Crash Log提取及分析方法

    转载地址:http://blog.csdn.net/langresser/article/details/7403729 提取crash log的方法: 方法1:用工具直接获取 iPhone 设备上 ...

  6. iOS 几种常用的 crash log 崩溃信息调试方法

    前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1 ...

  7. iOS-几种常用的 crash log 崩溃信息调试方法

    前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1 ...

  8. 深入理解iOS Crash Log

    Crash Log Crash Log的主要来源有两种: Apple提供的,可以从用户设备中直接拷贝,或者从iTunes Connect(XCode)下载 三方或者自研Framework统计,三方服务 ...

  9. IOS反汇编工具Hopper分析Crash Log

    2019独角兽企业重金招聘Python工程师标准>>> 在Mac OS下分析Crash Log有很多种方法,这里不是要说明如何分析的Crash Log, 主要是展示下Hopper的使 ...

最新文章

  1. Coursera吴恩达《神经网络与深度学习》课程笔记(2)-- 神经网络基础之逻辑回归...
  2. 强化学习之父--David Sliver最新演讲内容!
  3. Spring,为内部方法新起一个事务,此处应有坑。
  4. JavaScript from C#(入门篇)
  5. ZooKeeper(二)ZooKeeper能做什么?
  6. 【Python】Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型
  7. 【SpringCloud】 failed to req API:/nacos/v1/ns/instance after all servers code:500 msg Read timed out
  8. 201671030107 胡文艳 实验十四 团队项目评审课程项目总结
  9. 服务器芯片组思维导图,服务器思维导图
  10. Oracle 11.2.4.0 ACTIVE DATAGUARD 单实例安装(COPY创建备库)
  11. [leetcode]208. 实现 Trie (前缀树)
  12. CSDN blog 还需要继续改进
  13. pulse 去马赛克软件_Github高赞:打马赛克=形同虚设,AI看透你一切小心思
  14. 自建rtmp直播和朋友一起异地看电影
  15. 多元相关分析与回归分析(转)
  16. 获取官方win10系统镜像方法
  17. 用matlab解决多重共线性问题,几种关于多重共线性回归问题的解决方法
  18. 2022 哪些企业在考虑 IDaaS ?IDaaS 适合我们企业么?
  19. 中国新冠疫苗首针将于1月15日接种,正确的运输和存储可保证其安全有效
  20. 大学生创业知识(转)

热门文章

  1. 开源GIS系统关系图
  2. 挑战程序设计竞赛 (秋叶拓哉 / 岩田阳一 / 北川宜稔 著)
  3. Hadoop的学习路线图
  4. 飞信即将归来:移动企业IM面临的三大难题
  5. python-多继承
  6. Sencha Touch2中数据的获取
  7. 【Project3】技术总结
  8. 用计算机弹可惜不是你,可惜不是你 还是幸亏不是你
  9. Python 内置模块之 时间模块 time
  10. 数据分级分类实施指南_运营商行业数据安全治理实践