Ios 开发期间是否需要dSYM文件?

Ios 开发期间是否需要dSYM文件?,ios,xcode,macos,debugging,Ios,Xcode,Macos,Debugging,我知道,当您为应用商店生成应用程序的最终版本时,dSYM文件非常有用,因为它们将具有用于符号化崩溃日志的调试符号 我的问题是,在开发期间是否有必要。我这样问是因为禁用它们会使编译时间减少75%。您只希望DWARF用于开发,DWARF with dSYM用于发布 新项目默认为此配置> 另请参见此图。首先,为了避免一些混淆:新iOS项目调试配置的默认调试信息格式为“DWARF with dSYM file”,而新OSX项目的默认调试信息格式为“DWARF with dSYM file” 其中一部分

我知道,当您为应用商店生成应用程序的最终版本时,dSYM文件非常有用,因为它们将具有用于符号化崩溃日志的调试符号


我的问题是,在开发期间是否有必要。我这样问是因为禁用它们会使编译时间减少75%。

您只希望DWARF用于开发,DWARF with dSYM用于发布

新项目默认为此配置>


另请参见此图。

首先,为了避免一些混淆:新iOS项目调试配置的默认调试信息格式为“DWARF with dSYM file”,而新OSX项目的默认调试信息格式为“DWARF with dSYM file”

其中一部分是历史记录,但目前,iOS设置仍然是“DWARF with dSYM file”,这仅仅是因为Xcode中的一部分在从iOS设备复制崩溃日志时使用了dSYM。因此,如果您计划测试您的开发构建,将其下载到设备,然后在调试器之外直接启动并执行它,那么使用dSYM对于理解您遇到的任何崩溃都很方便。当然,如果您在调试器下运行,它将在崩溃点停止,因此不需要符号化崩溃报告

除此之外,我不认为你在iOS上切换到侏儒会有任何损失。正如SpaceDog所指出的,它确实加快了周转时间,因为调试器知道如何惰性地链接它所需要的东西,而dSYM创建工具(dsymutil)必须读取并重写所有这些东西


当然,当您进行发布构建时,您希望生成并归档调试信息——这是dSYM的全部要点,因为除此之外,调试信息(包含在.o文件中)将与其他中间版本产品一起被删除,您将无法对发布的应用程序中发生的崩溃进行符号化处理。

您是否使用调试器?为什么?我现在已经禁用了它们,我仍然可以使用调试器。我想我看到的是不同的东西。想知道你在改变什么设置吗?。通过将其更改为DWARF only with dSYM,编译时间将下降75%。我发现有一个用例(暂时)将调试符号格式(返回)更改为DWARF with dSYM文件-当您在Instruments中评测应用程序时,并且您已将目标方案的概要文件设置更改为使用调试版本你为什么要那样做?我发现仪器中的CPU使用率(通过计数器仪器)源代码注释偶尔会令人难以置信地产生误导,报告基本getter调用的大量活动或不相关的仅运行一次初始化语句。改为调试(或减少版本优化)会告诉你真实的情况。问题是:为什么苹果在Xcode上安装了开启的dSYM进行开发…我在某处看到调试信息包含在mach-o文件中,dSYM只是从中提取文件,对吗?这基本上是正确的,虽然它不是从.o文件到dSYM的简单拷贝。当链接器构建一个二进制映像时,它可以按照函数在.o文件和死代码条中的方式对函数进行重新排序。有关这些转换的信息将写入二进制文件的“调试映射”中。dsymutil使用该调试映射来“链接”.o文件调试信息,因为它被复制到dSYM.com上!谢谢。当我们想把一个版本下载到设备上并“用手指启动”它时(大部分时间QA都是这么做的),我们会给他们一个发布版本——我们有DSYM。