dwarfdump-调试版本没有符号?

Ver*_*con 1 xcode dwarf

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

请参见下面的输出(我仅抓取了DSYM输出的第一部分)。

为什么调试版本为空?


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

.debug_info内容:<EMPTY>


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

.debug_info内容:<EMPTY>


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

.debug_info内容:

0x00000000:编译单元:长度= 0x000013ad版本= 0x0003 abbr_offset = 0x00000000 addr_size = 0x04(下一个CU位于0x000013b1)

0x0000000b:TAG_compile_unit [1] * AT_producer(“ Apple Swift版本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版本= 0x0003 abbr_offset = 0x00000000 addr_size = 0x04(下一个CU位于0x00001374)

0x0000000b:TAG_compile_unit [1] * AT_producer(“ Apple Swift版本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)

Jas*_*nda 5

在macOS,iOS,tvOS,watchOS上,当您执行“矮级”样式构建(请参阅Xcode项目的构建设置)时,调试信息位于.o文件中,而不是链接的可执行文件中。当您运行dsymutil或选择“ dwarf + dSYM”样式的构建设置时,将.dSYM创建一个包,其中所有调试信息都.o收集在单个包/二进制文件中的文件中。

  • 链接的可执行文件不应该仍然具有可执行目标中代码的调试信息吗?有没有办法深入了解调试信息? (2认同)