Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从命令行(Mac)生成的.dSYM文件_C_Macos_Gcc_Makefile_Dsym - Fatal编程技术网

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

从命令行(Mac)生成的.dSYM文件,c,macos,gcc,makefile,dsym,C,Macos,Gcc,Makefile,Dsym,我刚开始用C编写代码,然后运行其他人的Makefile,默认的C编译器设置为gcc。我在Mac OSX 10.8 Mountain Lion上,我相信我安装了带有“XCode命令行工具”的编译器。在命令行上运行“make”之后,我会为每个程序获得这些恼人的.dSYM文件。我读到这些是调试文件,但它们真的有必要吗?有没有办法防止它们从命令行生成 只有在需要解释崩溃报告中堆栈跟踪中的位置时才需要它们。GCC的-g标志将生成调试符号。您只需从CFLAGS中删除该标志即可。是的,dSYM文件是必需的。具

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

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

GCC的
-g
标志将生成调试符号。您只需从
CFLAGS

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


如果你扔掉了dSYM文件,那么如果你突然发现你的应用程序大量崩溃,你可能会感到抱歉。

检查
Makefile
中运行的
dsymutil
,并将其注释掉gcc不应该自己生成这些代码。执行此操作的工具称为
dsymutil
。另外:不,它们不需要运行二进制文件,仅用于调试目的。Makefile中没有dsymutil,但运行以下标志:CFLAGS=-m32-g-O0-std=gnu99-wall在gdb中有源代码引用也很有用