我正在使用CMake on MacOS为我的C++项目生成Makefile。当我构建一个目标(比如说,test/AsyncTest)时,我会得到这个目标,再加上一个包含以下内容的test/AsyncTest.dSYM/目录:
test/AsyncTest.dSYM/Contents/Resources/DWARF/AsyncTest
test/AsyncTest.dSYM/Contents/Info.plist我猜这是调试信息(基于".dSYM“和”侏儒“线索),但我还没有找到一个可以检查AsyncTest文件的工具。dwarfdump不认识它。
那么,这个文件到底是什么?是否有一个工具可以用来转储符号信息(假设它就是这样的)?为什么CMake生成它,而我没有要求它?而且我不能生成它(因为生成的文件是huuuuge)?
发布于 2018-08-01 06:34:49
默认情况下,macOS / OS /达尔文/马赫-O对象具有“分离调试”方案。
当一个exe被链接时,静态链接器(ld64)不包括该exe中的调试数据。
但是,静态链接器(在exe符号表中)记录它链接的对象文件的名称。
第二个工具(调试链接器,名为dsymutil)使用exe文件表和原始对象,并链接调试-生成包含链接调试的标准mach-o包结构。默认情况下,name.dSYM中" name“是exe的名称。
LLDB和GDB的某些版本可以使用这个包来提供他们需要的调试数据。
要查看内容:
Xcode“侏儒转储”实用程序可以理解包(侏儒转储name.dSYM)。
实际内容:name.dSYM/content/Resources/侏儒/name也应该通过以下方式进行压缩:
发布于 2018-07-31 21:16:56
我不知道里面到底是什么,但这与调试有关,而不是cmake的错误:"c++ -g test.cpp -o test“也会生成它。
据我所知,关闭它的唯一方法是不以调试模式编译:将-DCMAKE_BUILD_TYPE=Release传递给cmake。
https://stackoverflow.com/questions/51621742
复制相似问题