Xcode 4无法表示崩溃日志

时间:2011-03-28 11:52:57

标签: iphone cocoa-touch xcode debugging adhoc

我刚刚将Xcode更新为4.0.1。现在我对从我的测试仪甚至是我的手机收到的崩溃日志的符号表有疑问。

当我构建AdHoc发行版时,我正在使用“Arhive”方案,然后我创建了* .ipa文件,用我的开发者凭据唱出来。

这是问题吗? 而且我找不到这些AdHoc版本的dSym文件。

6 个答案:

答案 0 :(得分:24)

除了coob的答案,我发现将这些目录添加到Spotlight的忽略列表(系统偏好设置→Spotlight→隐私)有助于:

  • ~/Library/Developer/Xcode/DerivedData/(Xcode 4 build artefacts)
  • ~/Library/Application Support/iPhone Simulator/(iPhone模拟器的文件系统)

像这样:

Spotlight settings to suppress unhelpful .app files

(有关其他详细信息,请参阅this blog post。)

更新:来自joerick的评论:“这有效,但这也意味着Instruments.app找不到调试符号,所以我不得不从中删除DerivedData隐私清单做一些剖析。“ - 如果您使用仪器,请记住这一点。

答案 1 :(得分:24)

对我来说,323行编辑和Spotlight排除都没有修复它。因此,我在symbolicatecrashpublished a patched version on github中追踪了问题。只需替换/ usr / local / bin / symbolicatecrash,您的iOS崩溃报告就会再次开始象征。

此修补程序可能不适用于Mac应用程序,因为它会假设.xcarchive目录的结构似乎不适用于桌面应用程序。

修改:如果Spotlight没有为您的档案编制索引,您可能仍会遇到问题。您可以通过在终端中运行以下命令来强制索引:

mdimport ~/Library/Developer/Xcode/Archives/

有关排查here的更多信息。

答案 2 :(得分:3)

符号化脚本在找到正确的二进制文件/ dSYM时遇到问题。它使用Spotlight来执行此操作并经常启动。这里有几件事要尝试:

  1. 确保您的.app没有 空间。

  2. 可能正在查找版本 您的应用安装在模拟器上 (向后,但它有时会 这对我来说)。重置你的模拟器。

  3. 清除您的构建目录。

答案 3 :(得分:3)

我今天遇到了同样的问题。根据我在网络上的研究,armv6库存在一个问题,导致符号化过程失败。我在dev forums here中找到了答案。

对于那些无法访问的人,您需要从symbolicatecrash创建/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/脚本的副本。编辑文件并使用'print'替换第323行的'die'(这就是为什么它不起作用,脚本在这里失败)。

然后针对崩溃日志运行symbolicatecrash。你会看到第323行的错误,但它会表示所有你的行和变量。它仍然无法用于系统库,但它提供了足够的信息来修复自己的错误。

希望这有帮助。

答案 4 :(得分:0)

我想我有这个问题,或类似的东西。 Xcode 4.0没有显示我从测试人员那里遇到的崩溃的符号。 我似乎通过打开我创建的xarchive来解决这个问题,并从其中复制出dsym文件(右键单击并“查看包内容”)并将其放在存档文件夹中。我不能保证这是解决方案 - 我当时正在尝试其他一些解决方案,但我知道我现在有了符号而且之前没有。值得一试吗?

答案 5 :(得分:0)

要在崩溃日志中根据它的ID找到dSYM文件,如下所示:

  

二进制图像:          0x100000000-0x100021ff7 + com.developer.foobar 1.1(2)< D1B7F956-7D79-3D4D-BA53-E9EBB368A9F8> /Applications/FooBar.app/Contents/MacOS/FooBar

你可以这样做:

  

mdfind com_apple_xcode_dsym_uuids == D1B7F956-7D79-3D4D-BA53-E9EBB368A9F8

对于使用“DWARF with dSYM”构建的OSX应用程序,您实际上并不需要dSYM文件,可以使用https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS处的手动方法

另外,要检查二进制文件的UID,您可以执行类似

的操作
dwarfdump --uuid /Users/valexa/Desktop/GPSnote.app/GPSnote 

UUID:6194D2B0-4E61-3834-AD15-C279EB1848XX(armv7)
UUID:D1B7F956-7D79-3D4D-BA53-E9EBB368A9F8(armv7s)