在MacOS中编译C++代码时的dSYM目录

nev*_*int 24 c++ compiler-construction macos debug-symbols

为什么在Mac中编译C++总是创建*.dSYM目录?有没有办法禁用它?

Nik*_*man 41

这是因为您的Xcode项目设置为使用外部dSYM文件构建调试符号.这对于发布版本来说实际上非常方便,因为这意味着您可以从应用程序中删除调试符号,并且当用户向您发送crashdump时,您可以使用原始dSYM文件生成适当的堆栈跟踪以进行调试.

无论如何,您不需要在项目中禁用调试符号生成.相反,只需将调试符号类型更改为DWARF(而不是"使用dSYM文件的DWARF").您也可以使用Stabs,但那是旧格式.

编辑:啊,我看到你的意思是从命令行,而不是从Xcode.我不是坐在我的mac atm前面,但我从gcc4手册页看到的比你可以指定-gstabs使用Stabs格式.

  • 有趣的怪癖:在MacOS 10.6.2上,如果你在'link'行中包含一个源文件,那么运行dsymutil程序来生成.dSYM信息; 如果只链接目标文件和库,则不运行dsymutil程序,因此不会生成.dSYM信息.您可以使用GCC的'-v'选项对其进行验证,该选项显示由'gcc'执行的程序. (4认同)