iOS发布版本中,“Strip Debug Symbols”设置应该是什么?

6
我最近收到了我(主要用c++编写)在iOS上的应用程序的许多崩溃日志。我的问题是,我似乎无法正确符号化这些崩溃报告。
在iOS发布时,“适当”的剥离调试符号设置是什么?我知道你会想要剥离调试符号,以便应用程序下载大小不会过大。
但问题在于,它似乎使得崩溃报告几乎无法阅读。
xcode存档中的dSYM文件是否会被发送并最终被用户下载?
还是仅仅是为未来的符号化目的而保留(在我的本地机器上,在xcode上执行)?

你可以尝试使用像 Crashlytics 这样的框架。 - l'L'l
这是一个第三方键盘,完全没有互联网访问权限。此外,它根本就无法打开,所以除了崩溃报告之外,我似乎无法从中获取任何其他信息。 - kamziro
2个回答

0
还是只是为了将来的符号化目的而保留(在我的本地机器上,在Xcode上完成)?
这个。您的“发布”配置(或用于分发的任何配置)应具有以下设置:
默认情况下隐藏符号:是
Xcode仍会生成一个dSYM文件夹,这是您将用于符号化崩溃日志的内容。有3种处理符号化的方法:
1. 使用Xcode。为此,您需要在发布时使用Product->Archive功能。创建存档后,可以选择“导出”,然后选择“保存iOS应用商店部署”。之后,您可以将崩溃日志拖到“设备日志”窗口的左侧,Xcode将为您进行符号化。
2. 使用位于Xcode.app文件夹内的symbolicatecrash工具手动符号化。如果您已将代码发布给用户但没有Xcode存档,则此选项很有用。您需要确保崩溃日志与二进制文件和dSYM匹配,否则它将无法正常工作。
3. 使用第三方工具收集崩溃报告并为您进行符号化。示例包括Crashlytics、Bugsense或HockeyApp。

-1

如果你想了解任何东西的正确设置,你所要做的只是:

在Xcode中从头开始重新创建完全相同的目标类型。我的意思是,如果你想知道一个应用的正确设置,那么就从头开始重新创建一个应用,然后检查它的设置。如果你想知道一个框架的默认设置,那么就从头开始重新创建动态框架并检查其设置。

注意:应用、框架、静态库和其他东西的默认设置是不同的。另外,Release版本和Debug版本的默认值也不同。

为什么应用和框架不同?

因为框架是依赖项而不是最终产品。这通常意味着应用需要与其他依赖项或主应用程序本身具有不同的编译、链接和剥离设置。

为什么Debug版本和Release版本不同?

Debug版本的目标是:

  • 快速进行构建。这意味着:
  • 不为其他架构进行构建。
  • 不创建单独的dSYM文件。
  • 能够进行调试。

Release版本的目标是:

  • 尽量进行最优化的构建。通常这会降低速度。
  • 验证构建是否适用于其他体系结构(arm64与Intel)。这意味着需要更多时间来构建。
  • 提取dSYM(调试符号)以节省空间。
  • 不需要进行调试,只需要能够在需要时解析崩溃报告的符号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接