iOS:symbolicatecrash 卡住了

标签 ios symbolicatecrash

symbolicatecrash 卡住了。

我试图像这样运行它:

symbolicatecrash -v crash.txt MYAPP

执行永远不会结束。它过去曾经工作,但现在(Xcode 7 和 8)它被卡住了。

请问有解决办法吗?

最佳答案

这是一个解决方案:

深入的细节出现在这里:iOS9: duplicated lines in crash reports are causing symbolicatecrash to get stuck

快速解决方案是编辑此 perl 脚本(Xcode 8 中的新位置!):

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

现在搜索 defined($images{$bundlename}) 并添加 next; 紧接着,像这样:

        if ( defined($images{$bundlename}) ) {
            next;

就是这样!

一些非常有用的符号提示:

对于符号化,您需要 3 个文件:

  1. 包含崩溃报告的文本文件:以 Incident Identifier: 开头并以 0x1974d0000 - 0x1974f3fff libxpc.dylib arm64 <ad580443238d39978d09004c210d0c18> /usr/lib/system/libxpc.dylib 之类的结尾

  2. 应用程序文件夹,名为 MYAPP.app(Finder 隐藏了 .app 扩展名)。如果您有应用程序的 IPA,请将其解压缩,它会出现在 Payload 文件夹中。

  3. dSYM 文件夹,由 Xcode 在编译时生成。

您应该将 dSYM 文件夹重命名为 MYAPP.app.dSYM 并将所有三个文件放在同一个文件夹中。

三者必须具有相同的 UUID。要验证您是否可以使用以下命令(我通过运行 gsed 得到了 brew install gnu-sed):

应用的UUID:
dwarfdump --uuid MYAPP.app/MYAPP

符号的UUID:
dwarfdump --uuid MYAPP.app.dSYM

UUID od 崩溃:
cat crash.txt | grep -A 1 "Binary Images:" | gsed -r -n -e 's_.*<([0-9a-z]{8})([0-9a-z]{4})([0-9a-z]{4})([0-9a-z]{4})([0-9a-z]{12}).*_\1-\2-\3-\4-\5_p' | awk '{print toupper($0)}'

现在,如果它们都匹配相同的 UUID,您可以:

symbolicatecrash -v crash.txt MYAPP

关于iOS:symbolicatecrash 卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894529/

相关文章:

ios - 如何在没有 Storyboard的情况下运行应用程序?

ios - 内存泄漏: AVplayerViewController

ios - iphone 应用程序被拒绝但没有通知电子邮件

iphone - 崩溃日志链接到哪个 .dSYM

ios - 在 Device Central 中测试 Flash iOS 应用程序

ios - 使用默认值初始化 ViewModel

iphone - XCode 4.2 的 symbolicatecrash 未对系统符号进行符号化

ios - 符号化框架内崩溃的崩溃日志

ios - 应用程序因崩溃日志不明确而被拒绝

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