使用symbolicatecrash解析了一个crash log

有一天,测试同学给了我一个未经符号化的崩溃日志。如果是以前,我会找到打这个测试包的同事,让他将奔溃日志符号化后发给我。但是这次,我老板傲娇的拒绝了,而是让我自己来做符号化的工作>.<


工具和必要文件



上网查了查,我选择了symbolicatecrash工具来符号化这个崩溃日志。这是Xcode自带的一个perl脚本。

另外,我还需要崩溃日志(测试同学给了我一个.plist文件),测试包对应的.dSYM文件和测试包对应的.app文件。


使用symbolicatecrash



在Xcode6.0之后,这个脚本位于

Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash

从它开头的注释中,可以了解到,它会利用Spotlight,通过UUID来搜索需要的.dSYM文件,然后找到对应的可执行文件,然后搜索SDK目录。

所以我们可以这样把崩溃日志、.dSYM文件和.app文件放到某个目录下,先在命令行中运行:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

然后运行symbolicatecrash,比如这样:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash   ~/myCrash/myCrash.plist  > ~/myCrash/myCrash.log

就能在得到符号化之后的崩溃日志了。


System framework的符号化



当我按照上面的步骤运行了symbolicatecrash之后,我发现得到的符号化之后的崩溃日志中,只有应用本身被符号化了,UIKit等system framework却没能被符号化。
可能就是这样(图是stackoverflow上截的):

只有一部分被符号化了的崩溃日志

然而网上的教程都没有提到这种情况(╥﹏╥)

那让我来想想这是为什么吧。

如果要让system framework被符号化,那么一定有相关的符号文件存在我电脑的某个地方。它一定会与iOS的版本有关,因为iOS的每次升级,肯定都会有不同的system framework的符号文件。
查了一下,果然,在~/Library/Developer/Xcode/iOS DeviceSupport/中能看到以iOS版本号命名的一些文件夹。而我需要符号化的崩溃日志,发生在运行着iOS7.0.6的设备上。而我电脑中,这个文件夹里面却没有iOS7.0.6的文件夹。
想起每当我第一次将某个iOS设备连接到电脑上时,Xcode都会loading一段时间,才能使用这个设备。在loading的阶段,依稀记得Xcode上的提示是“copying symbols”之类的。于是我想,我电脑中的system framework的符号文件,应该就是这样来的。

所以找测试同学借了发生这个crash的设备,连接到电脑,果然出现了一个新的文件夹。


出现了7.0.6文件夹

而当Xcode的loading结束后,再次运行symbolicatecrash,就得到了完整的符号化之后的崩溃日志。


参考

分析iOS Crash文件:符号化iOS Crash文件的3种方法
symbolicatecrash with XCode 4.2 not symbolicating system symbols


2016.01.24更新



可以用这个命令在电脑里找到某个uuid对应的dSYM文件:

mdfind "com_apple_xcode_dsym_uuids == xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容

  • 如果大家是用真机在调试的过程中出现了Crash,那么请看iOS调试之 crash log分析 前言 导读:Unde...
    KODIE阅读 6,469评论 7 12
  • 本文就捕获iOS Crash、Crash日志组成、Crash日志符号化、异常信息解读、常见的Crash五部分介绍。...
    xukuangbo_阅读 1,581评论 0 0
  • 前言 iOS崩溃是让iOS开发人员比较头痛的事情,app崩溃了,说明代码写的有问题,这时如何快速定位到崩溃的地方很...
    齐滇大圣阅读 65,326评论 29 443
  • 现在躺在床上,嘿嘿 今天感觉自己长大一点,因为最近担的事比较多,早上爸妈来看姥姥,我爸带着我和弟弟去奶奶家,最近不...
    臧小鹿阅读 222评论 0 0
  • 这双鞋子经常被人形容为丑到爆,但卖到了火爆。 这双鞋子是雪地鞋,但很多人表示在雪地里很快就湿了。 这双鞋穿上它,小...
    shaoneng阅读 323评论 0 0