无法符号化崩溃日志

Posted

技术标签:

【中文标题】无法符号化崩溃日志【英文标题】:Unable to symbolicate crash log 【发布时间】:2013-02-11 09:19:23 【问题描述】:

我在符号化我的崩溃日志时遇到了一些问题。 我按照 naveenshan 在this 线程中回答的所有步骤进行操作。 但是一旦我执行了这条线

atos -arch armv7 -o 'app name.app'/'app name' 0x0003b508,

它只是让我回到控制台上的地址 0x0003b508。

我无法弄清楚为什么它不代表我的崩溃日志。

我什至尝试通过将崩溃日志拖放到 xcode 中的设备日志中来进行符号化。但即使这样似乎也行不通。

【问题讨论】:

你有.DSYM 文件吗? 是的,我愿意。我将 DSYM 文件、.crash 文件和我的应用程序文件都放在一个文件夹中。 问题是,我最初为应用程序制作了一个 ipa 用于测试,然后为了象征我的崩溃日志,我存档了相同的构建并获得了我的 DSYM 文件。希望这不应该是一个问题。 这可能不会成为问题,只要这两个应用程序都是使用相同的编译器和编译器选项构建的。 对于符号化,您需要拥有与正在安装的应用程序同时构建的 dSYM。每次构建过程都会为应用程序二进制文件分配一个新的 UUID,然后在崩溃报告中使用该 UUID。符号化过程使用该 UUID 来查找相应的 dSYM 包。现在,如果您再次构建,该 UUID 将有所不同,并且如果先前的 dSYM 已被删除或无法通过 Spotlight 找到,则符号化将不起作用。不管编译器和选项是否相同! 【参考方案1】:

您必须具有在安装在设备上并生成崩溃报告的构建过程中生成的确切 dSYM。

请按照此答案中说明的步骤操作(即使最初的问题不一样,这些步骤也有助于确定您是否拥有正确的 dSYM):Symbolicate Crash Log when App Name Contains Apostrophe and Space (Deployed App)

使用您发布的atos 执行该行很可能不会返回任何有用的信息,因为作为参数给出的地址不必存在于您的应用程序中。您必须使用从崩溃报告中获取并正确计算的正确地址,如下所述:ios crash reports: atos not working as expected

最好的方法是按照第一个链接帖子中的步骤进行操作。

【讨论】:

以上是关于无法符号化崩溃日志的主要内容,如果未能解决你的问题,请参考以下文章

无法符号化 Monotouch iOS 应用程序崩溃日志

崩溃日志缺少一个符号帧

使用静态库符号化应用程序的崩溃日志

iOS 查看崩溃日志与符号化

在 Xcode 4.2 中启用崩溃日志符号化

隐藏动态框架的符号化崩溃日志