我试图将我对"DWARF“vs "DWARF with dSYM file”调试信息格式的理解与我在不同iOS构建配置的崩溃信息中看到的信息格式相对应。
我正在尝试修复一个问题,默认情况下,使用调试配置构建时的崩溃不是象征性的。这些是我在修复问题之前的构建设置-
剥离链接产品-调试-否,发布-是
复制时剥离调试符号-调试-否,发布-是
调试信息格式-调试- DWARF,发布-带有dSYM文件的DWARF
让它工作的是将调试信息格式设置为"DWARF with dSYM File“,以便进行调试配置。
我的问题是-如果我指定不应该将产品的符号剥离到dSYM文件中(在带链接的产品设置中),为什么我需要将格式设置为“使用dSYM文件矮化”?
我的理解(可能是错误的)是,如果我将它设置为DWARF,那么所有的调试信息都将在应用程序二进制文件中,并且我不需要单独的dSym文件来进行符号化?请帮助我更好地理解这一点。
发布于 2019-01-11 03:32:15
在苹果的平台上,DWARF永远不会包含在可执行文件中(除了展开信息)。启用DWARF调试信息只意味着.o文件包含DWARF格式的调试信息。不过,链接器不会将其带入可执行文件中。
如果请求dSYM文件,则单独的构建步骤将使用dsymutil将调试信息从.o文件收集到dSYM包或文件中。
调试器可以在需要时使用可执行文件中的映射来查找.o文件中的调试信息,假设您是在构建计算机上进行调试的。这就是为什么调试构建通常不需要dSYM文件的原因。Symbolication没有可执行文件,只有它的UUID。它可以使用UUID查找dSYM,但它没有查找.o文件所需的信息。
请看一位苹果开发人员参与实现这些东西的this answer。还有,this older wiki article他写道。
https://stackoverflow.com/questions/54133246
复制相似问题