从命令行生成的 .dSYM 文件 (Mac)

Posted

技术标签:

【中文标题】从命令行生成的 .dSYM 文件 (Mac)【英文标题】:.dSYM files generated from command line (Mac) 【发布时间】:2013-07-19 10:33:13 【问题描述】:

我刚开始用 C 编写代码,并使用默认 C 编译器设置为 gcc 运行其他人的 Makefile。我在 Mac OSX 10.8 Mountain Lion 上,我相信我使用“XCode 命令行工具”安装了编译器。在命令行上运行“make”后,我得到了每个程序的这些烦人的 .dSYM 文件。我读到这些是调试文件,但它们真的有必要吗?有什么办法可以防止它们从命令行生成?

【问题讨论】:

检查dsymutil 是否在Makefile 中运行并将其注释掉。 OS X 上的gcc 不应该自己生成这些。执行此操作的工具称为dsymutil。另外:不,它们不需要运行二进制文件,仅用于调试目的。 Makefile 中没有 dsymutil,但运行了以下标志:CFLAGS = -m32 -g -O0 -std=gnu99 -Wall 【参考方案1】:

GCC 的-g 标志将生成调试符号。您可以简单地从 CFLAGS 中删除该标志。

【讨论】:

【参考方案2】:

是的,dSYM 文件是必需的。具体来说,它们包含 Xcode 调试版本中包含的符号表;发布版本将符号放在这个单独的文件中。如果您需要分析发布版本中的堆栈跟踪,您将需要它。并确保您不会丢失文件,因为再次构建,即使源绝对相同,也不会产生可用的 dSYM 文件。每个构建都有一个 UUID,并且随着每个构建而改变,即使源没有改变。 (我猜它包括一个时间戳,甚至是一个随机数。)

如果你扔掉了 dSYM 文件,那么如果你突然发现你的应用经常崩溃,你可能会后悔。

【讨论】:

【参考方案3】:

仅当您需要在崩溃报告中解释堆栈跟踪中的位置时才需要它们。

【讨论】:

它们对于在 gdb 中有源引用也很有用

以上是关于从命令行生成的 .dSYM 文件 (Mac)的主要内容,如果未能解决你的问题,请参考以下文章

无法压缩 dSyms

mac命令行终端怎么创建文件 mac命令行终端创建文件教程

mac命令行 从linux服务器下载文件到本地

xcodebuild - 设置构建目录不会生成 dSYM

从 Mac 上的命令行删除当前文件夹和所有子文件夹中的 .DS_STORE 文件

ue4 重新生成ide project文件的命令行