如何创建.dSYM文件?

cou*_*chy 44 xcode objective-c ios dsym

我正在与另一个开发人员合作开发一个应用程序,他们只是向他们的计算机上构建的应用商店提交了一个版本.为了在我的机器上构建(属于同一个git commit),我必须改变我们在XCode项目中使用的库之一的路径.我对XCode项目文件所做的任何更改是否会更改dSYM?如果我能够在不修改XCode项目文件的情况下进行构建,那么dSYM文件是否相同?

Jas*_*ien 113

dSYM文件是"调试符号文件".在项目的构建设置中启用"Strip Debug Symbols"设置时生成.

启用此设置后,将从生成的编译二进制文件中删除对象的符号名称(尝试和阻止的许多对策之一是黑客/破解程序对代码进行逆向工程,以及二进制大小的其他优化等).

dSYM文件可能会在每次编译应用程序时更改(可能每次都由于日期戳),并且与项目设置无关.

它们可用于重新标记崩溃报告.使用剥离的二进制文件,如果没有首先重新符号化,您将无法读取任何崩溃报告.如果没有dSYM,崩溃报告将只显示对象和方法的内存地址.Xcode使用dSYM将符号放回崩溃报告中,并允许您正确读取它.

理想情况下,不应在git仓库中跟踪您的dSYM文件.像在建筑物上改变的其他二进制文件一样,将它们保存在源代码管理中是没有用的.但是,说到这一点,重要的是保持每个分布式构建(测试版,新闻稿,应用程序商店发行版等)的dSYM文件安全,以便您能够表示您可能获得的任何崩溃报告.当您使用存档选项时,Xcode会自动为您执行此操作.创建的存档包含您的应用程序及其dSYM,并存储在Xcode的派生数据目录中.

  • 一个补充:dSYM和可执行文件具有匹配的嵌入式UUID.因此,每次构建完成都会导致两者都获得新的UUID.结果是符号化仅在导致崩溃的二进制文件的UUID与用于符号化的dSYM的UUID匹配时才有效. (29认同)
  • 我有点困惑...你说"Strip Debug Symbols"需要启用(设置为"YES")才能生成?然而,在下面,它表示如果设置已启用,则删除对象的名称*...因此,如果我想在Instruments中查看我的符号名称,是否应将此设置设置为"YES"或"NO" ? (4认同)
  • Jasarien在这里给出了很好的答案.我将添加使用"Archive"这几天将所有这些整齐地存储在Xcode目录中的文件夹中.您可以右键单击Xco​​de的管理器中的存档和"在Finder中显示".但为了完整性,我将添加我的文件夹存在于〜/ Library/Developer/Archive中 (3认同)
  • 根据经验,对于调试版本,"Strip Debug Symbols"应为"NO",以便调试器能够显示所有符号.发布版本应该将其设置为"YES",这将从二进制文件中删除符号,创建.dSYM文件以将其放入.因此,在进行性能分析时,您应该决定使用哪种配置,如果需要查看符号,然后使用调试配置,以便它们可用 - 如果您需要分析性能,可能最好使用发布配置. (3认同)
  • 感谢您提供额外信息,凯米.我不知道那部分. (2认同)
  • 完整符号化所需的另一个设置(例如,本地调试构建)似乎是:_构建设置_ › _构建选项_ › _调试信息格式_ › _DWARF 与 dSYM 文件_。就像发布版本一样。 (2认同)