使用二进制,虽然会给工程带来构建速度的提升,但是会带来一个新的问题:在调试工程时,那些使用二进制的组件,无法像源码调试那样看到足够丰富的调试信息
原理
DWARF是一种调试信息格式,通常用于源码级别调试。能够为调试器提供必要的调试信息,例如PC地址对应的文件名及行号等信息。如果在打包静态库的时候,没有裁减掉调试信息(Generate Debug Symbols = YES),那么静态库Mach-O文件中存在一个__DWARF段,这个段就保存了相关调试信息,包含符号对应的源码文件位置等信息,在用lldb进行调试的时候,调试器就会更新__DWARF段的相关信息去查找源码,然后关联显示出来。可以使用系统自带的DWARF查看工具dwarfdump查看静态库的调试信息,可以看到如下类似调试信息,包含符号对应的源文件地址,源文件中行数等详细信息:
dwarfdump xxxSDK