gpt4 book ai didi

cmake - cmake 使用 macos 上的 makefile 生成器创建的 .dSYM 目录中有什么?

转载 作者:行者123 更新时间:2023-12-01 00:17:09 30 4
gpt4 key购买 nike

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

test/AsyncTest.dSYM/Contents/Resources/DWARF/AsyncTest
test/AsyncTest.dSYM/Contents/Info.plist

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

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

最佳答案

macOS/OS X/Darwin/Mach-O 对象默认具有“分离调试”方案。

链接 exe 时,静态链接器 (ld64) 不包括 exe 中的调试数据。

但是,静态链接器记录(在 exe 符号表中)它链接的目标文件的名称

第二个工具(调试链接器,名为 dsymutil)使用 exe 文件表和原始对象并链接调试 - 生成包含链接调试的标准 mach-o 包结构。 [默认 name.dSYM] 其中“name”是 exe 的名称。

LLDB 和某些版本的 GDB 可以使用这个包来提供他们需要的调试数据。

查看内容:

Xcode“dwarfdump”实用程序可以理解包(dwarfdump name.dSYM)。

实际内容:
name.dSYM/Contents/Resources/DWARF/name 也应该可以通过以下方式转储:

  • llvm-dwarfdump
  • BINUTILS objdump(如果它是为适当的 darwin 目标构建的)。
  • 关于cmake - cmake 使用 macos 上的 makefile 生成器创建的 <target>.dSYM 目录中有什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51621742/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com