调试崩溃
崩溃
当应用程序崩溃时,
- macOS 会在
~/Library/Logs/DiagnosticReports
中创建一个.ips
文件。 您可以使用内置的“控制台”应用程序(cmd-space 控制台
)在“崩溃报告”下查看这些文件。 - Linux 会创建一个核心转储。 请参阅 手册页,了解有关如何配置系统来管理核心转储的提示。
如果您启用了 Zed 的遥测功能,这些信息将在您重新启动应用程序时上传给我们。 它们最终会出现在一个 Slack 频道(仅限内部)中。
这些崩溃报告由崩溃的二进制文件生成,包含大量信息;但由于以下几个原因,它们很难阅读
- 它们不包含源文件和行号
- 这些符号是 经过名称修饰的
- 内联函数被省略
在 macOS 上,为了更好地了解崩溃的回溯,您可以将 .ips
文件下载到本地并运行
./script/symbolicate ~/path/zed-XXX-XXX.ips
这将从我们的公共 数字海洋存储桶下载正确的调试符号,并为您运行 symbolicate。
输出包含源文件和行号,以及每个内联帧的名称解码的符号信息。
Panic
当应用程序在 Rust 级别出现 panic 时,Zed 会在 ~/Library/Logs/Zed
或 $XDG_DATA_HOME/zed/logs
中创建一个文件,其中包含 panic 的文本和回溯的摘要。 启动时,如果您启用了遥测功能,我们会上传这些 panic,以便我们可以跟踪它们。
Panic 也被认为是崩溃,因此对于大多数 panic,我们都会获得崩溃报告和 panic。
使用调试器
如果您可以一致地重现崩溃,则可以使用调试器来检查程序在崩溃时的状态,通常可以提供关于崩溃原因的非常有用的见解。
您可以阅读更多关于设置和使用 Zed 的调试器,特别是关于调试崩溃的信息,请点击此处