我已经广泛搜索了这个,并且有人遇到的情况涉及不同的Xcode版本(因此有不同的构建选项),或者存在dSYM文件。
所以,情况就是这样。我通过Xcode收到了崩溃报告。它只是内存地址。试图在项目中打开它给我相同的内存地址。考虑手动符号,但为此我需要与我构建的档案相对应的dSYM文件。但是,当我在Finder中构建的存档“显示包内容”时,其dSYM文件夹为空。
归档时的我的Xcode设置是:
DEBUG_INFORMATION_FORMAT: DWARF with dSYM File
STRIP_INSTALLED_PRODUCT: Yes
切换到No
没有任何区别。
DEPLOYMENT_POSTPROCESSING: No
切换到Yes
没有任何区别。
此外,我在将存档上传到iTunes Connect时选择了“包含符号”。
使用Apple进行部署的过程令人困惑,而且不必担心发生崩溃时,resport实际上是可读的!
所以我的问题是:
1)为什么我的存档缺少dSYM文件?
2)如果已生成dSYM文件,它可能在哪里?
3)如果我真的没有dSYM文件,我还能以某种方式获得人类可读的符号名称吗?我已经上传了原始存档并访问了该版本的源代码。
3a)如果我的产品>再次存档(假设这次dSYM确实生成了),我可以使用这个dSYM文件吗?或者它会有不同的UUID,导致它与崩溃日志不相容......好吧...... Apple?
Xcode版本:6.4
以下是我的崩溃日志在Xcode Organizer中的样子:
感谢。
编辑:
我在尝试之前升级到Xcode 7.3,但它也适用于版本6.
问题(1)的解决方案是在项目构建设置中设置以下内容:
GCC_GENERATE_DEBUGGING_SYMBOLS
答案 0 :(得分:1)
问题1),我也不知道。它可能是Xcode的错误。你可以存档
再次使用相同的代码,然后生成相同的dSYM文件。
对于问题2),您可以在'〜/ Library'文件夹中搜索'dSYM',因为'dSYM'文件通常在那里输出。如果找不到,请尝试在整个磁盘中搜索。
对于问题3),您必须拥有“二进制图像”部分中列出的崩溃日志的系统库符号文件。您可以在'〜/ Library / Developer / Xcode / iOS DeviceSupport'中找到它。如果未找到,您可以将具有崩溃日志中显示的相同操作系统版本的iPhone连接到Xcode。在Xcode完成处理后,可以将iPhone的系统库符号文件复制到该文件夹中。然后,您可以重新表示崩溃日志。
对于问题3a),对于相同的应用程序代码,不同的Archive可能具有不同的dSYM文件(UUID)。如果您使用它来表示崩溃日志,则符号化的崩溃线非常接近真实的崩溃线,因此这也可以帮助您推断崩溃的真正原因。
从您的屏幕截图中,您的应用代码中只有一行不符号化。现在,您可以使用应用程序代码生成应用程序的dSYM文件,从而导致崩溃再次归档。生成dSYM文件后,使用命令行dwarfdump -u yourApp.app.dSYM
获取它的UUID,然后检查uuid是否包含在“二进制图像”的第一行中。如果为NO,则可以将“二进制图像”第一行中的UUID修改为与dwarfdump -u XXX.dSYM
获得的新UUID相同,请注意cpu体系结构。完成此操作后,您可以在Xcode中重新表示崩溃日志,或使用命令行symbolicatecrash crashreport.crash yourApp.app.dSYM
。请注意,您必须保证应用程序代码的版本与崩溃日志中的版本相同,否则,结果难以置信。
答案 1 :(得分:0)