dwarfdump - 调试版本没有符号?

dwarfdump - Debug Build Has No Symbols?

我已经为 iphoneos 和 iphonesimulator 构建了我的项目,包括调试和发布。当我在调试版本上 运行 dwarfdump 时报告为空。当我 运行 它在发布版本 DSYMs 上报告所有符号时。

查看下面的输出(我只抓取了 DSYM 输出的第一部分)。

为什么调试版本是空的?


文件:Debug-iphoneos/VerticonsToolbox.framework/VerticonsToolbox (arm64)

.debug_info内容: <空>


文件:Debug-iphonesimulator/VerticonsToolbox.framework/VerticonsToolbox (x86_64)

.debug_info内容: <空>


文件:Release-iphoneos/VerticonsToolbox.framework.dSYM/Contents/Resources/DWARF/VerticonsToolbox (armv7)

.debug_info 内容:

0x00000000:编译单元:长度=0x000013ad版本=0x0003abbr_offset=0x00000000addr_size=0x04(下一个CU在0x000013b1)

0x0000000b: TAG_compile_unit [1] * AT_producer("Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)") AT_language(DW_LANG_Swift) AT_name( "/Users/Robert/Development/iOS/VerticonsToolbox/VerticonsToolbox/UI/Application.swift" ) AT_stmt_list(0x00000000) AT_comp_dir( "/Users/Robert/Development/iOS/VerticonsToolbox")


文件:Release-iphonesimulator/VerticonsToolbox.framework.dSYM/Contents/Resources/DWARF/VerticonsToolbox (i386)

.debug_info 内容:

0x00000000:编译单元:长度=0x00001370 版本=0x0003abbr_offset=0x00000000addr_size=0x04(下一个 CU 在 0x00001374)

0x0000000b: TAG_compile_unit [1] * AT_producer("Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)") AT_language(DW_LANG_Swift) AT_name( "/Users/Robert/Development/iOS/VerticonsToolbox/VerticonsToolbox/UI/Application.swift" ) AT_stmt_list(0x00000000) AT_comp_dir( "/Users/Robert/Development/iOS/VerticonsToolbox" ) AT_APPLE_optimized( 0x01 )

在 macOS、iOS、tvOS、watchOS 上,当您进行 "dwarf" 风格构建时(查看您的 Xcode 项目的构建设置),调试信息位于 .o 文件,而不是链接的可执行文件。当您 运行 dsymutil 或 select 一个 "dwarf + dSYM" 样式构建设置时,将创建一个 .dSYM 包,其中包含 [=10= 中的所有调试信息] 文件收集到一个包/二进制文件中。