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

Posted

技术标签:

【中文标题】如何符号化来自 Xamarin Forms iOS 项目的崩溃/错误日志?【英文标题】:How to symbolicate crash/error logs from a Xamarin Forms iOS project? 【发布时间】:2016-11-29 11:11:45 【问题描述】:

我需要符号化一些崩溃日志,为此我读到我需要 .app 和 .dSYM 文件以及 .crash 文件。

我在任何地方都找不到 .app 文件。我有 .app.dSYM 文件和 .crash 文件,但我找不到 .app 文件。

我还可以在 Xcode Organizer 上查看我的错误日志。但是我的应用程序中的线条没有符号化。如果我单击箭头打开一个项目,我不知道要打开哪个文件。

谢谢

【问题讨论】:

【参考方案1】:

当您构建您的 ios 项目时,您应该在 bin/iPhone/Release 目录中拥有 .app 文件。或者,如果您有 .ipa 文件,您可以从中提取 .app。您可以将文件重命名为 .zip 并提取。 .app 将位于 Payload 文件夹中。在 Windows 上,它可能有点令人困惑,因为该图标可能看起来像一个文件夹或目录。检查文件扩展名。在 Mac 上,它应该能够识别 .app,并且它可能根本不显示扩展名。相反,它看起来像这样:

重要提示:您需要使用生成崩溃报告的相同 .app 文件。这意味着您必须使用您在生成崩溃报告的设备上安装的包中的 .app。希望您将其存档或保存在某个地方。简单地重建项目以获取新的 .app 在符号化过程中不会与 .crash 文件匹配,并且无法正常工作。如果您无权访问它,则需要再次发布,这次保留 .app 以备下次分析 .crash 时使用。

要手动进行符号化,我有一篇关于这样做的博客文章here。总结一下,步骤如下:

创建别名

打开终端并为您的 Xcode 版本运行以下命令之一:

Xcode 7.X
alias symbolicate="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v"  

这只是通过将 symbolicatecrash 工具别名为符号命令来更轻松地使用它,因此我们不必导航到该目录来运行命令。

更新开发者目录

运行这个命令:

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

象征性

再次打开终端并 cd 到您在上述步骤中放置文件的目录。运行我们之前使用别名的symbolicate 命令,使用您的 .crash 和 .app 文件作为参数,如下所示:

symbolicate -o "symbolicatedCrash.txt" "MyAppName 2-12-14, 9-44 PM.crash" "MyAppName.app"

这将符号化崩溃文件并将结果输出到一个名为“symbolicatedCrash.txt”的新文件中。确保更正我示例中的文件名以匹配您的。

【讨论】:

它就像一个魅力。但我的 .app 文件绝对不在那个文件夹中。但我设法从 ipa 得到它。 现在我需要帮助来理解这个日志。在我的代码中看起来不是问题。发布的应用程序可以运行一段时间,但在完成启动之前就开始崩溃。而且我找不到任何导致我的代码的东西。对于第一个应用程序视图,它在 InitializeComponent 中崩溃。但我不能只是把它贴在这里寻求帮助,所以……你有什么办法可以帮助我吗?这几天我的评论真的很差:/ 当然!在bugzilla.xamarin.com/enter_bug.cgi?product=Forms 提交错误并附上您可以私下共享的任何文件。以后我可以看看他们。评论并让我知道该错误的链接。如果您愿意,也可以将整个错误设为私​​有。 现在在哪里可以找到 dSym 文件?在 xcarchive 文件中?

以上是关于如何符号化来自 Xamarin Forms iOS 项目的崩溃/错误日志?的主要内容,如果未能解决你的问题,请参考以下文章

在 Xamarin Forms iOS 中启用 AppCenter 崩溃和分析时,本机链接失败,重复符号:“_cxa+throw”

从 xamarin.mac / xamarin.forms 的编辑菜单中删除表情符号和符号

最新 iOS 更新 (12.2) 后,本地存储中的视频未在 WebView (Xamarin.Forms) 中播放

Xamarin.Forms 中的 MVVMLight 的 EventToCommand

如何在 Xamarin.Forms 中获取/检测屏幕大小?

如何在单击 xamarin.forms.maps iOS c# 时更改 pin 图标