gpt4 book ai didi

ios - 调试信息 "DWARF"和崩溃日志

转载 作者:行者123 更新时间:2023-11-28 23:38:40 25 4
gpt4 key购买 nike

我试图将我对“DWARF”与“DWARF with dSYM file”调试信息格式的理解映射到我在不同 iOS 构建配置的崩溃信息中看到的内容。

我试图解决一个问题,即默认情况下不会对使用调试配置的构建崩溃进行符号化。这些是问题解决之前我的build设置 -

剥离链接产品 - 调试 - 否,发布 - 是

复制期间删除调试符号 - 调试 - 否,发布 - 是

调试信息格式 - 调试 - DWARF、发布 - DWARF 和 dSYM 文件

使它起作用的是将调试信息格式设置为“DWARF with dSYM File”以进行调试配置。

我的问题是 - 如果我指定不应将产品的符号剥离到 dSYM 文件中(在剥离链接产品设置中),为什么我需要将格式设置为“带有 dSYM 文件的 DWARF”?

我(可能不正确)的理解是,如果我将其设置为 DWARF,那么所有调试信息都将位于应用程序二进制文件内,并且我不需要单独的 dSym 文件进行符号化?请帮助我更好地理解这一点。

最佳答案

在Apple的平台上,DWARF永远不会被烘焙到可执行文件中(除了展开信息)。启用 DWARF 调试信息仅意味着 .o 文件包含 DWARF 格式的调试信息。不过,链接器不会将其带入可执行文件中。

如果您请求 dSYM 文件,则单独的构建步骤将使用 dsymutil 将调试信息从 .o 文件收集到 dSYM 包或文件中。

假设您正在构建机器上进行调试,调试器可以在需要时使用可执行文件中的映射来查找 .o 文件中的调试信息。这就是为什么您通常不需要 dSYM 文件来进行调试构建。符号化没有可执行文件,只有一个 UUID。它可以使用 UUID 找到 dSYM,但没有找到 .o 文件的信息。

参见 this answer由参与实现这个东西的苹果开发人员完成。另外,this older wiki article他写道。

关于ios - 调试信息 "DWARF"和崩溃日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54133246/

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