Xcode:复制时是否应剥离调试符号?

34

TestFlight SDK建议在Xcode构建设置中将Strip Debug Symbols During Copy设置为YES,以实现最佳的崩溃报告。我注意到它默认已设置为YES

我应该将其更改为YES吗?为什么或者为什么不?


16
这是不正确的:TestFlight SDK建议您将Strip Debug Symbols During Copy等设置设置为“NO”! - codeperson
3个回答

36

我在TestFlight工作。简单回答是:将其设置为YES

详细回答:

@Kerni是正确的。在我们开始在服务器端进行符号化之前,需要该数据在设备上进行符号化。

因此,如果您上传dSYM到TestFlight,则可以剥离它们。如果由于某些原因您不想上传dSYM,则可以将它们保留,使TestFlight可以在设备上进行符号化。

基本上,README没有更新。抱歉@Manni!我会在下一个版本中更新它。(我将删除整个部分)。

对于造成的混乱,非常抱歉!


1
如果我将Debug设置为NO会怎样?这对调试有帮助吗?本地应用程序的大小是否重要?它会使构建速度变慢吗? - Iulian Onofrei
我认为在调试时将其设置为NO没有任何理由。我认为它并没有什么帮助。应用程序会更大,因此在加载到设备上时会稍微慢一些。 - jasongregori
为什么这篇文章说你应该将其设置为“NO”?我也尝试了他在“Xcode 6.4”中所说的,并且新项目的设置已经被设置为“NO”。 - Iulian Onofrei

26
如果默认设置为YES,则无需执行其他操作。
通常情况下,此设置可确保调试符号不包含在分发的二进制文件中,从而将文件大小减少30-50%。相反,应将调试符号写入dSYM DWARF文件中,以便稍后用于符号化崩溃报告。

7
TestFlight SDK建议将此设置为“NO”,而不是“YES”:
为了实现最佳的崩溃报告,我们建议在Xcode中为您希望进行实时崩溃报告的所有目标设置以下项目构建设置为“NO”。您可以通过打开项目导航器(默认命令+1或命令+shift+j)找到构建设置,然后单击您正在配置的项目(通常是列表中的第一个选择)。从那里,您可以选择更改全局项目设置或个别项目设置。以下所有设置都在部署部分中。
- 部署后处理 - 复制期间剥离调试符号 - 剥离链接产品
Bugsense(http://www.bugsense.com/pages/faq)也建议使用此设置,并给出以下解释:
为什么我的iOS应用程序只能获得内存转储而无法获得堆栈跟踪?
iOS应用程序通常不包含调试信息,或者该信息包含在具有扩展名dSYM(调试符号)的特殊文件中。要为iOS应用程序打开(并包含在二进制文件中)调试信息,您必须将名为“Strip Debug Symbols”的项目设置为“NO”,以适用于所有项目配置。

18
这两个提示都不好,因为它们会使应用程序的大小增加很多。而且没有必要将它们添加到二进制文件中,因为你可以在 Mac 上对它们进行符号化。此外,我参与的服务 HockeyApp 提供完整的服务器端崩溃报告符号化,无需将符号添加到二进制文件中。此外,自从一段时间以来,Testflight 更改了他们的建议,因为他们允许上传 dSYM。他们可能没有更新他们的常见问题解答。 - Kerni

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