调试崩溃

崩溃

当应用崩溃时,macOS 会在 ~/Library/Logs/DiagnosticReports 中创建一个 .ips 文件。你可以使用内置的控制台应用(cmd-space Console)在“崩溃报告”下查看这些文件。

如果你启用了 Zed 的遥测,这些文件会在你重新启动应用时上传给我们。它们最终会进入 Datadog,以及一个 Slack 频道(仅限内部)

这些崩溃报告是由崩溃的二进制文件生成的,其中包含大量信息;但由于以下几个原因,它们很难阅读

  • 它们不包含源文件和行号
  • 符号是 混淆
  • 内联函数被省略

为了更好地了解崩溃的回溯,你可以下载本地 .ips 文件并运行

./script/symbolicate ~/path/zed-XXX-XXX.ips

这将从我们的公共 digital ocean bucket 下载正确的调试符号,并为你运行 symbolicate

输出包含源文件和行号,以及每个内联帧的去混淆符号信息。

恐慌

当应用在 rust 级别恐慌时,Zed 会在 ~/Library/Logs/Zed 中创建一个文件,其中包含恐慌的文本和回溯摘要。在启动时,如果你启用了遥测,我们会上传这些恐慌,以便我们跟踪它们。

恐慌也被认为是一种崩溃,因此对于大多数恐慌,我们都会同时获得崩溃报告和恐慌。