没有dSYM文件 解析iOS崩溃日志

一般情况下,在我们 Archive 完项目后需要保存对应的 dSYM 文件,这样有线上崩溃时,崩溃统计工具并没有明确提供崩溃类和方法时,我们拿着地址去 dSYM 文件中对比,找到对应的符号,也就是类和方法名字。但是,有时候我们弄丢了 dSYM 文件,就没法定位了,这时候就需要恢复符号表了。

下载一个 demo,调整为 debug 模式。我在 release 模式下,在设备中获取到的 Device Logs 直接显示了崩溃的类和方法名字,暂时不知道为什么,所以先用 debug 模式吧。

  1. 在真机上运行 APP,我的手机是 iPhone6 plus,程序运行起来,点击按钮 Crash on Func。通过 Xcode 的 Window -> Devices and Simulators -> View Device Logs 找到CrashTest 的崩溃信息,注意一下 Code Type:,后面需要用到。崩溃信息大致如下:
此处删除了部分内容
Code Type:           ARM-64 (Native)  注意这里!!!
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.gomemyc.mylc.ios.enterprise.CrashTest [651]


Date/Time:           2017-11-13 18:20:06.3615 +0800
Launch Time:         2017-11-13 18:20:04.7860 +0800
OS Version:          iPhone OS 11.0.3 (15A432)
Baseband Version:    6.17.00
Report Version:      104

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Application Specific Information:
abort() called

Filtered syslog:
None found

Last Exception Backtrace:
0   CoreFoundation                  0x183c2bd38 __exceptionPreprocess + 124
1   libobjc.A.dylib                 0x183140528 objc_exception_throw + 55
2   CoreFoundation                  0x183bc4c44 _CFThrowFormattedException + 111
3   CoreFoundation                  0x183c738cc -[__NSArrayI objectAtIndexedSubscript:] + 131
4   CrashTest                       0x100537b28 0x100530000 + 31528
5   CrashTest                       0x100537a60 0x100530000 + 31328
6   UIKit                           0x18d07020c -[UIApplication sendAction:to:from:forEvent:] + 95
7   UIKit                           0x18d07018c -[UIControl sendAction:to:forEvent:] + 79
8   UIKit                           0x18d05af4c -[UIControl _sendActionsForEvents:withEvent:] + 439

此处删除了部分内容

可以看到 Last Exception Backtrace: 下面有我们 APP 崩溃的两条信息。0x100530000 是基址,0x100537b28 和 0x100537a60 是调用堆栈的地址,后面会用到。

此时需要在 Xcode 中的 Products 下,右击 CrashTest.app -> Show in Finder,拷贝 CrashTest 到桌面,留着后面用。

  1. 安装工具(最好克隆在桌面上)
1. git clone --recursive https://github.com/tobefuturer/restore-symbol.git
2. cd restore-symbol && make

将第一步中拷贝到桌面上的 CrashTest 右击 -> 显示包内容,拷贝 CrashTest 到 restore-symbol 文件夹下,你看样的文件目录应该是这样的:


restore-symbol.png
  1. 终端进入到 restore-symbol 文件夹下,执行:./restore-symbol -o CrashTest-symbol CrashTest 命令,通过ls可以查看目录下是否多了 CrashTest-symbol 文件。

  2. 通过 atos 命令查看崩溃的具体类和函数,命令是:atos -arch arm64 -o CrashTest-symbol -l 0x100530000 0x100537b28 0x100537a60(此处要注意你的机型是否是arm64,要写你自己的机型),此时你需要注意的是 0x100530000 是你的基址,0x100537b28 和 0x100537a60 是在第一步中看到的崩溃类和函数的调用堆栈,这里要替换成自己的。然后你就可以看到正确的打印出了崩溃的类名和方法名字,大致如下:

-[ViewController getChild:] (in CrashTest-symbol) (ViewController.m:66)
-[ViewController crashOnFunc:] (in CrashTest-symbol) (ViewController.m:57)

最后操作的命令大致如下截图:


终端截图.png

在这期间,参考了两篇博客,但是如果完全按照这个博客做的话,我没有做出来,或许是有些细节没有注意到。参考如下:
详解没有dSYM文件 如何解析iOS崩溃日志
杨君的小黑屋

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

推荐阅读更多精彩内容