10

你能帮我把我的崩溃符号化吗?

在 Xcode 7.3 中,Window -> Organizer -> Crashes,我有来自我最新的 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 测试版到现在我已经经历了很多,但还没有找到解决方案

4

6 回答 6

13

symbolicatecrashXcode 7.3 中的位置发生了变化:

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

于 2016-03-24T16:22:23.953 回答
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. 右键单击它并选择“在 Finder 中显示”。

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

  7. 深入到 DistributionInfos -> all -> Logs。

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

  9. 等待一两秒钟让 Xcode 象征崩溃。

于 2016-10-12T00:05:08.617 回答
2

同样在这里。升级到 7.3 后很难找到 symbolicatecrash。

但是,您仍然可以使用atos。你可以在这里找到教程Symbolicate crash in iOS8 with Xcode 6 .1

于 2016-03-23T23:49:43.983 回答
1

我没有在我的应用程序中上传符号,因此 App Store 无法为我提供符号。我使用以下解决方法来表示 XCode 从商店下载的所有崩溃日志。这些说明适用于 XCode 8。符号化崩溃应用程序的路径因 XCode 版本而异,但每个版本的想法应该相同。

  1. 将符号放在符号器可以找到它们的位置:将符号 (.dsym) 文件放在 Archives 目录中。您可以通过转到管理器,上下文单击存档并选择“在查找器中显示”来找到它。向上导航到 Archives 目录(例如/Users/USERNAME/Library/Developer/Xcode/Archives)并将您的 dsym 文件放在那里。它也可以在其他位置,只是我已经验证了这个有效。
  2. 下载崩溃日志:在 XCode 中,确保您已经下载了您想要符号化的构建的崩溃日志(Organizer->Crashes,单击您的应用程序,然后在面板右侧的面板中选择您的应用程序的版本)应用程序列表)。
  3. 在磁盘上找到崩溃日志:在具有应用程序版本和内部版本号的面板中,上下文单击其中一个崩溃并选择“在 Finder 中显示”。向上导航到“崩溃文件夹”并记下此位置,例如:/Users/USERNAME/Library/Developer/Xcode/Products/com.company-name.Your-App/VERSION/Crashes
  4. 在命令行上为 symbolicatecrash 设置 DEVELOPER_DIR:打开终端窗口和 CD 到步骤 3 中的 crash 目录,然后像这样设置 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 找到您的符号化崩溃日志。Apple 将它从一个版本移动到另一个版本的 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. 查看崩溃返回崩溃管理器并查看符号化崩溃
于 2016-10-21T16:09:24.203 回答
0

根据Xcode 9.0的文档:

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

您可以在Xcode 的文档中查看更多信息。

于 2017-12-13T03:55:21.900 回答
0

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

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

我正在使用 Crasher 脚本来表示崩溃报告 如何使用 Crasher

于 2016-03-24T07:41:28.537 回答