首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用macos上的makefile生成器cmake创建的<target>.dSYM目录是什么?

用macos上的makefile生成器cmake创建的<target>.dSYM目录是什么?
EN

Stack Overflow用户
提问于 2018-07-31 20:39:59
回答 2查看 1.3K关注 0票数 6

我正在使用CMake on MacOS为我的C++项目生成Makefile。当我构建一个目标(比如说,test/AsyncTest)时,我会得到这个目标,再加上一个包含以下内容的test/AsyncTest.dSYM/目录:

代码语言:javascript
复制
test/AsyncTest.dSYM/Contents/Resources/DWARF/AsyncTest
test/AsyncTest.dSYM/Contents/Info.plist

我猜这是调试信息(基于".dSYM“和”侏儒“线索),但我还没有找到一个可以检查AsyncTest文件的工具。dwarfdump不认识它。

那么,这个文件到底是什么?是否有一个工具可以用来转储符号信息(假设它就是这样的)?为什么CMake生成它,而我没有要求它?而且我不能生成它(因为生成的文件是huuuuge)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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也应该通过以下方式进行压缩:

  • 小矮人
  • BINUTILS objdump (如果它是为适当的达尔文目标构建的)。
票数 9
EN

Stack Overflow用户

发布于 2018-07-31 21:16:56

我不知道里面到底是什么,但这与调试有关,而不是cmake的错误:"c++ -g test.cpp -o test“也会生成它。

据我所知,关闭它的唯一方法是不以调试模式编译:将-DCMAKE_BUILD_TYPE=Release传递给cmake。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51621742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档