Xcode崩溃日志整理工具无法为.xccrashpoint文件进行符号化

32
新的Xcode 7“崩溃”选项卡在组织者中显示了我的应用程序在AppStore中出现的一些崩溃。根据文档,应该有一个堆栈跟踪。但是,这6个崩溃中没有一个具有符号化的堆栈跟踪: enter image description here 我尝试过点击“在项目中打开”,但它同样无用: enter image description here 当然,我在提交到商店时包含了dsym和调试信息。我仍然在我的组织者中保留了提交版本构建,因此dsym仍然存在于我的机器上。我该如何得到正确的堆栈跟踪?

2
我遇到了同样的问题。 - dmarnel
我在我的两个项目中遇到了同样的问题。不同的发布者,一个是禁用了位码的Swift,另一个是纯ObjC。两者都使用了dSYMs进行提交。我将提交一个错误报告。 - mspasov
我正在考虑两个项目之间共享的通用库可能会引起这种情况。更新的Google AdMob和StartApp库是共同的因素。旧版本的两个应用程序崩溃的符号已被解决。 - mspasov
4个回答

21

不是最理想的方法,但如果你右键点击一个 .xccrashpoint 文件,选择 "显示包内容",你可以浏览其文件夹结构以找到实际的 .crash 文件,并通过命令行提取然后进行符号化使用这里描述的步骤

运行

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

确保已设置DEVELOPER_DIR

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

5

简短描述:

Xcode 9.0中:"Crashes Organizer"使用本地的.dSYM文件对未符号化的日志进行符号化(如果它们被选中),该文件由Spotlight索引。(22550064)

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

详细描述:

Xcode为机器码应用程序生成.xcarchive时,会默认生成.dSYM文件,并由Spotlight索引。对于使用位码上传的应用程序,您可以使用档案管理器下载由Spotlight默认索引的dSYM文件。

如果您选择在上传应用程序到App Store时不包括符号信息,则Crashes Organizer下载的崩溃日志将是未符号化的。如果您有适用于已崩溃应用程序版本的相应.dSYM文件,当您单击崩溃以查看其详细信息时,Xcode将自动对其进行符号化。此功能存在于Xcode 9.0+中。您可以通过右键单击日志详细信息视图并单击“symbolicate”来手动调用重新符号化。


1
这是Xcode 9的正确答案,除非OP的主要目的是从命令行执行符号化等操作。也可以直接使用Xcode对收到的崩溃报告进行符号化:https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATEWITHXCODE 唯一遗憾的是:界面过于不直观... - ppm
"Symbolicate" 被禁用了。 - Hogdotmac
我无法在Xcode崩溃组织器中跟踪任何崩溃日志,根据苹果文档,我已经使用代理凭据进行了登录,但我无法跟踪,我只有.dSYM文件,该如何处理? - Shakti
太好了!这解释了我的问题,将.dSYM文件下载并解压缩到任何位置以允许Spotlight索引修复了该问题。我在开发中使用两台不同的计算机,有时在其中一台上构建,所以这完全合理!苹果实现得太糟糕了。 - Jona
啊,是的,除了这个有问题。我们上传了我们的dSYM文件,我甚至也在本地拥有它,但它无法符号化。显然是苹果Bug#1230981023。 - user187676

1

我第一次在Xcode 10中进行此操作。右键单击我的崩溃日志并选择Symbolicate没有任何效果。我在组织者窗口的存档部分中选择了构建,并在右侧面板中点击了“下载调试符号”按钮。这似乎没有做任何事情,但当我回到Crashes并告诉Xcode再次对同一个崩溃进行符号化时,这次它起作用了。


我必须在符号化开始工作之前重新启动XCode 11。否则,以上内容对我有效。 - JonLord

0

您需要在本地拥有应用程序的 dSYMs。如果这是从构建盒子上传的构建,那么您将没有它们。前往App Store Connect,点击“活动”选项卡,找到您相关的构建,并点击进入。版本详细信息屏幕包括一个链接,可下载dSYMs - 这样做,并展开它们下载的.zip文件。

现在回到Xcode中的崩溃 - 它们将成功地进行符号化。

理智提示:确保您的本地源代码与崩溃版本相同。否则,如果自发布以来源文件已更改,则Xcode可能会将您转移到错误的行。例如,您的源代码的127行现在已经移动到129行,因为您最近添加了两行...而崩溃视图并不知道这些变化。它将显示代码崩溃在第127行,实际上崩溃代码位于第129行。


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