iOS调试 ~之崩溃日志的符号化

Determining Whether a Crash Report is Symbolicated
(决定是否符号化崩溃日志)
一个崩溃日志可能是没有符号化的,没有符号化的日志将不包括方法或者和方法名在回溯信息汇总。然而,你二进制映像在可执行的16进制的地址中。在一个被完全符号化的日志中,每一行16进制地址都是对应着符号。在部分符号化的崩溃日志中,只有一些地址在回溯日志中被替换在它的回馈符号中。很明显,你应该尝试符号化获得的崩溃日志当它提供了很多内在的崩溃。一部分符号化奔溃日志可能包括足够的饿信息去明白奔溃,依赖崩溃的类型和回溯的一部分(被成功符号化的一部分)。没有符号化的崩溃日志很少有用。

日志的集中类型

Symbolicating Crash Reports With Xcode (使用xcode进行符号化)
xcode 会自动尝试符号化崩溃日志,需要的所有的用于符号化从organizer中。


xcode获取崩溃日志的步骤

要符号化这些崩溃日志,需要本地化一下步骤;
(1)应用的二进制文件和dsym文件
(2)二进制和dsym文件对于所有的库(应用所以来的),这些库用于从应用的源码中建立,他们的dsym文件用于拷贝进入归档依赖dsym文件。对于第三方库,我们需要问作者要dsym文件。
(3)os的符号对于应用运行当崩溃的时候,这些符号包括调试信息对于库包括os的分布。os符号是指定结构的,一个指定64位的设备不包括armv7 符号。xcode 将自动拷贝os符号从每一个设备(你连接到你的mac上的设备)

Symbolicating Crash Reports With atos(使用atos进行符号化)
atos -- 将数字化的地址转化为二进制符号或者进程;
如果一个调试的符号信息是有用的,atos的输出将会包括文件的名字和资源的行号信息。atos 命令能够用于符号化单独的地址在没有被符号化的回溯信息中或者部分符号化、崩溃日志。去符号化一部分崩溃日志使用atos。
1) 找一行回溯信息中的你想符号化的,注意二进制映像的名字在第二列和第三列的地址
2)查找二进制映像的名字在崩溃日志的二进制映像汇总。注意结构和加载的二进制地址。
Figure 4 Information from the crash report that is needed to use atos.

atos的方式解析崩溃日志

1)定位对于二进制文件的dsym。你可以使spotlight 去查找匹配dsym文件和UUID的二进制对应。查看Symbolication Troubleshooting 节。
dsym文件被绑定,该dsym文件属于包括DWARF调试信息通过编译产生的在建立的时间。你必须根据提供的路径去这个文件而不是dsym 捆绑束。当调用atos的时候。
2)在上面的信息中你能够符号化地址在回溯信息汇总使用atos命令。你能够指定多个地址去符号化。通过空格来分开。
atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <address to symbolicate>

上面的内容例子:
atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc
-[AtomicElementViewController myTransitionDidStop:finished:context:]

Symbolication Troubleshooting(符号化分析解决问题)
如果xcode 符号化崩溃日志失败,可能是mac少了dsym对应的应用而二进制的文件,dsym文件对于一个或者多个库的依赖于一个或者多个应用的连接或者设备的符号对于正在运行的os运用(当它崩溃而时候)。西面步骤展示怎么使用spolight去确定dsym文件是否需要符号化一个回溯地址在你mac上的显示的二进制文件。
Figure 5 Locating the UUID for a binary image. (定位UUID和二进制映像)【通过二进制映像名字】

项目名字找对应的UUID等

1)找到回溯信息中的xcoe失败的符号。注意二进制映像文件的名字在第二列
2)查找二进制映像通过名字在崩溃日志的下面的二进制映像列表中。这个列表包括了UUIDs 对于每个二进制映像,它加载到崩溃日志的进程中。

Listing 2 通过grep工具快速找到 (可以的看到对应的二进制映像以及对应的内容是通过名字来找到的)
grep --after-context=1000 "Binary Images:" <Path to Crash Report> | grep <Binary Name>
3)转化二进制映像的UUID 到32个字母字符被(8-4-4-4-12)这样的方式进行组织分开。注意所有的字幕都必须是被转为大写字母。
4)查找UUID通过mdfind 命令工具使用"com_apple_xcode_dsym_uuids == <UUID>
Listing 3 使用mdfind 命令查找dsym文件和给出的UUID。
$ mdfind "com_apple_xcode_dsym_uuids == <UUID>

5)如果spotlight 找dfym文件的UUID,mdfind将会打印出dsym的路劲和可能包括的归档文件。如果一个dsym文件的UUID没有找到,将会推出没有打印任何信息。

如果Spotlight 到一个dsym文件给二进制文件但是xcode 不能够符号化地址对于二进制映像,然后你应该文件上有bug。让崩溃日志和dsym文件连接起来。在周围,你能够手动符号化地址通过atos。看 Symbolicating Crash Reports With ato 这一章。
如果spotlight 没有肇东dsym文件对于二进制映像,确定你仍然有一有xcode的归档文件对于你的应用,你的归档的崩溃日志定位的位置,spotlight能够找到你的目录如果是在home目录下面。如果你的应用使用了bitcode来进行打包,确定你下载的dsym文件对于对后的编译文件来自于app store。下载dsym我呢间。如果你想你有正确的dsym文件(二进制映像),你可以使用dwarfdump 命令答应出匹配的UUID。你可以用dwarfdump 命令打印二进制的UUID。
命令:
xcrun dwarfdump --uuid <Path to dSYM file>

注意: 你必须有归档文件就是你当初提交到app store 上对于你的应用的崩溃,dsym文件和应用的二进制被绑定在一起。创建一个新的归档我呢间,甚至从相同的源代码并且配置,将不会产生dsym我呢间和崩溃的建立关系。

如果你没有这个归档文件,你就需要提交新的一份,进行操作了。

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

推荐阅读更多精彩内容