如何在Xcode 7.3中解析崩溃日志?

10

你能帮我将崩溃日志符号化吗?

在Xcode 7.3中,选择“窗口”->“组织器”->“崩溃”,可以看到来自最新TestFlight版本构建的崩溃报告。这些报告是在这台Mac上构建的,所有包含相应dSYM的档案都在“归档”选项卡中。该应用程序分为多个框架和主应用程序,并且许多框架和应用程序是Swift和Objective C混合编写的。在崩溃日志中,我可以看到框架和应用程序名称被正确列出,但所有关于我的框架和应用程序的条目都是十六进制的。UIKit的符号化很好。

当我查看iTunes Connect时,它显示“包括符号”,并允许我下载dSYM。构建时,“调试信息格式”选项设置为“DWARF with dSYM”。我尝试将“复制期间剥离调试符号”和“剥离链接产品”设置为“否”,以查看是否有所改善。但这没有起作用。

我无法在系统中找到symbolicatecrash应用程序,甚至不在/usr/bin或/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash中。但是,我有一个旧的Xcode 5,可以从中获取它。但是,它无法解决符号。

我在Instruments中也遇到了同样的问题,如果我对我的应用程序进行配置文件分析,UIKit符号化得很好,但我的框架和应用程序只显示十六进制。

我知道已经有很多关于此问题的帖子,但我已经查看了从7.3测试版期间一直到现在的所有帖子,并没有找到解决方案。


可能是新的XCode崩溃组织者无法符号化.xccrashpoint文件的重复问题。 - mychrisdangelo
6个回答

13

symbolicatecrash 的位置在 Xcode 7.3 中已经发生了变化:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash


8
阅读完以下信息后:https://developer.apple.com/library/content/technotes/tn2151/_index.html,你会发现App Store负责解析来自TestFlight的崩溃报告,而不是Xcode。并且看起来, App Store在这方面非常不可靠。下面是一个解决方法。
  1. 转到“组织者”窗口中的“归档”选项卡,并确保对于您需要解析符号的构建版本,单击页面右侧的“下载dSYMS…”按钮。如果您正在上传BitCode,则需要执行此操作。

  2. 连接iOS设备,以便它出现在“设备”窗口中。

  3. 选择该设备,然后单击“查看设备日志”。

  4. 现在,返回“组织者”窗口,选择“崩溃”选项卡,并选择其中一次未解析符号的崩溃。

  5. 右键单击并选择“在查找器中显示”。

  6. 右键单击已显示的 .xccrashpoint bundle,并选择“显示包内容”。

  7. 打开DistributionInfos -> all -> Logs。

  8. 将任何 .crash 文件拖动到“设备”窗口中打开的“查看设备日志”面板的左侧。

  9. 等待一两秒,让Xcode解析崩溃。


2

1

我没有将符号与我的应用程序一起上传,因此App Store无法为我符号化。 我使用以下解决方法来为XCode从商店下载的所有崩溃日志进行符号化。 这些说明适用于XCode 8.每个版本的XCode的符号化崩溃应用程序的路径都不同,但每个版本的思路应该是相同的。

  1. 将符号文件放在符号化器可以找到的位置:将您的符号(.dsym)文件放在存档目录中。您可以通过转到组织者,上下文单击存档并选择“在查找器中显示”来找到此文件。导航到存档目录(例如/Users/USERNAME/Library/Developer/Xcode/Archives),然后将您的dsym文件放在那里。它也可以在其他位置,只是我已经验证过这个位置可用。
  2. 下载崩溃日志:在XCode中,确保您已经为您想要符号化的版本下载了崩溃日志(组织者->崩溃,单击您的应用程序,然后在应用程序列表右侧选择您的应用程序版本)。
  3. 定位磁盘上的崩溃日志:在具有应用程序版本和构建编号的面板中,上下文单击其中一个崩溃并选择“在查找器中显示”。导航到“崩溃文件夹”,并注意此位置,例如:/Users/USERNAME/Library/Developer/Xcode/Products/com.company-name.Your-App/VERSION/Crashes
  4. 设置命令行上的symbolicatecrash的DEVELOPER_DIR:打开一个终端窗口,并从步骤3的崩溃目录中CD到DEVELOPER_DIR,如下所示:cd /Users/USERNAME/Library/Developer/Xcode/Products/com.companyname.Your-App/VERSION/Crashes/ export set DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
    (这应该是XCode应用程序包内“Developer”目录的位置)。
  5. 找到symbolicatecrash脚本:symbolicatecrash知道如何使用步骤1中的dsym查找您的符号崩溃日志。苹果公司将其从xcode的版本移动到版本。您可以像这样找到它:find /Applications/Xcode.app/ -name symbolicatecrash。在XCode 8中,它位于/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
  6. 备份您的崩溃文件夹:您可能需要备份您的崩溃文件夹(/Users/USERNAME/Library/Developer/Xcode/Products/com.companyname.Your-App/VERSION/Crashes/)
  7. 符号化所有崩溃:请确保您仍然在步骤4的崩溃目录中,并键入
    for i in `find . -type f -name \*.crash`; do cat $i | /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash --output $i.sym; mv $i.sym $i; done;
    这将把每个.crash文件符号化为一个输出文件,然后将其复制回原始的未符号化文件。
  8. 查看崩溃:返回到崩溃组织者并查看符号化的崩溃

0

我尝试将symbolicatecrash文件从xCode 7.2复制并粘贴到以下路径的xCode 7.3中:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/Current/Resources/

我正在使用Crasher脚本来符号化崩溃报告 如何使用Crasher


0
根据Xcode 9.0的文档:
引用:

如果选择了未符号化的日志,Crashes Organizer将使用由Spotlight索引的本地.dSYM符号化它们。(22550064)

您可以在Xcode文档中了解更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接