没有 App 文件的 iOS 符号化

Posted

技术标签:

【中文标题】没有 App 文件的 iOS 符号化【英文标题】:iOS Symbolication without App file 【发布时间】:2014-11-04 04:09:39 【问题描述】:

有几家公司(Crittercism、Crashlytics、Hockeyapp 等)为 ios 提供崩溃符号服务。这些需要上传您的应用程序 dSYM 文件/文件夹,但它们不会要求您上传相关的应用程序文件。

Symbolicatecrash、ATOS 和相关工具似乎都需要 APP 和 dSYM 文件来表示崩溃。他们如何绕过这个要求?

【问题讨论】:

【参考方案1】:

实际符号化过程不使用或不需要应用程序二进制文件。 Xcode 的 symbolicatecrash 脚本要求应用程序二进制文件可用,但实际上从未使用它。没有记录为什么脚本需要二进制文件可用。您可以通过在编辑器中打开脚本(用 Perl 编写)自行验证。

【讨论】:

在 symblociatecrash 中使用 -v 我看到 atos 像这样使用:/Applications/Xcode.app/Contents/Developer/usr/bin/atos -arch arm64 -l 0x1000dc000 -o '/working/MyTest .app/MyTest' 0x0000000100147f8c 0x1000E7EF3。这似乎使用的是应用程序而不是 dSYM 如果您不调用作为选项提供应用程序包的脚本,它将使用 Spotlight 搜索 dSYM,然后使用它。即使它使用应用程序二进制文件,您也不会获得文件名或行号信息,这意味着结果总体上毫无用处。但无论如何,你的问题的答案仍然是一样的。不需要应用程序二进制文件,即使使用也需要不剥离符号(应用程序大小增加 30-50%),与单独使用 dSYM 相比,即使那样也不会提供那么多信息。 我同意 dSYM 包含最好的信息。但是 symbolicatecrash 脚本会跳过存在 dSYM 的符号化(对于我的二进制文件),除非相关的应用程序也可用。我想从脚本中删除应用依赖。 看来 symbolicatecrash 需要应用程序二进制文件来确定“幻灯片”,以便它可以在馈送到 dSYM 之前调整崩溃日志地址。那么 HockeyApp/Crittercism 等如何摆脱不提供应用程序?

以上是关于没有 App 文件的 iOS 符号化的主要内容,如果未能解决你的问题,请参考以下文章

iOS 符号化崩溃日志

如何符号化来自 Xamarin Forms iOS 项目的崩溃/错误日志?

iOS-symbolicatecrash符号化Crash文件

iOS 8 - 无法符号化来自自定义动态框架的符号

符号化 iPad 崩溃日志后,回溯仍然不可读

APP闪退问题