如何获取用于错误报告的堆栈跟踪¶
如果您在 Bugzilla 中提交了关于崩溃的错误报告,则应在报告中包含堆栈跟踪(调用堆栈)。堆栈跟踪将告诉 Mozilla 开发人员发生了什么崩溃,并提供调查其原因的起点。本文介绍了如何使用 Mozilla 崩溃报告程序 (Breakpad) 获取崩溃 ID,我们的工程师可以使用该 ID 获取堆栈跟踪,以及如果无法获取崩溃 ID 则获取堆栈跟踪的其他方法。
要求¶
您需要来自 Mozilla.org 的 Firefox 二进制构建版本。SeaMonkey 和 Thunderbird 也支持崩溃报告。
Mozilla 的崩溃报告服务器目前仅包含 Mozilla 构建的调试信息,因此如果您使用来自 Linux 发行版的构建版本或从源代码编译,则崩溃报告程序无法工作。在这些情况下,您需要使用下面列出的 备用方法 之一。
注意
注意:提交崩溃报告时,了解崩溃是否在 Firefox 安全模式 下发生非常重要。这有助于工程师确定特定 扩展 或 插件 是否是崩溃的原因。
如何使用 Mozilla 崩溃报告程序获取崩溃 ID¶
1 - 崩溃并向系统提交报告。
Firefox 崩溃后,Mozilla 崩溃报告程序窗口应自动弹出。如果您有任何关于崩溃的其他信息,例如有关您当时可能触发崩溃的操作的其他详细信息,请将其输入到评论框中。请确保您选中“告诉 Mozilla 关于此崩溃”复选框,然后单击“重新启动”按钮。崩溃报告程序现在应该会提交崩溃报告,并且 Firefox 应该会再次打开。
注意
“详细信息”按钮提供了有关事件的更多数据,但这在错误报告中没有用。
2 - 告诉我们您提交的报告的 ID。
要访问所有提交的报告,请在 Firefox 地址栏中键入“about:crashes”,然后按 Enter 键。Firefox 应该会打开一个包含您提交的崩溃报告的 ID 列表。复制两个或三个相应崩溃的 ID,并将它们粘贴到您的 Bugzilla 报告中。请检查列出的时间以避免复制无关崩溃报告的 ID。
注意
您可以将“bp-”作为前缀添加到 ID 的开头,以使 Bugzilla 将其转换为链接:bp-a70759c6-1295-4160-aa30-bc4772090918
如果 Firefox 在启动时崩溃,如何获取崩溃 ID¶
如果 Firefox 在启动时崩溃,您仍然可以访问提交的崩溃报告。可以从所有 Firefox 配置文件访问崩溃报告,因此,如果 新配置文件 没有崩溃,您可以使用它通过上述“about:crashes”访问它们。
在 Firefox 之外访问崩溃报告 ID¶
如果您根本无法加载 Firefox,则可以根据您的操作系统在以下位置找到崩溃报告文件
Windows:
%APPDATA%\Mozilla\Firefox\Crash Reports\submitted\
macOS:
~/Library/Application Support/Firefox/Crash Reports/submitted/
Linux:
~/.mozilla/firefox/Crash Reports/submitted/
或$XDG_CONFIG_HOME/mozilla/firefox/Crash Reports/submitted/
此文件夹中的每个文件都包含一个提交的崩溃报告 ID。您可以检查每个文件的修改或创建时间,以确定哪些崩溃报告与您的错误报告相关。
获取堆栈跟踪的其他方法¶
如果 Mozilla 崩溃报告程序没有弹出或不可用,则需要手动获取堆栈跟踪。
Windows¶
有关如何执行此操作的信息,请参阅文章 使用 Windbg 创建堆栈跟踪。
有关完整的进程转储,请参阅 如何使用 Windows 任务管理器获取进程转储。
macOS¶
运行 /Applications/Utilities/Console.app。展开“~/Library/Logs”和“CrashReporter”,然后查找“firefox”的日志。
Linux¶
请注意,对于大多数发行版,您需要获取符号的软件包将类似于“xulrunner”,而不是“firefox”。
计算机上的崩溃报告文件¶
当 Breakpad 最初捕获崩溃时,它首先将其崩溃报告文件(例如 .dump 和 .extra 文件)写入其“崩溃报告”目录的“pending”子目录中。
如果 Breakpad 成功将崩溃报告发送到报告服务器,则默认情况下,为该崩溃添加到“pending”子目录中的文件将被删除,并且 .txt 文件将放置在“submitted”目录中,其中包含报告服务器创建的崩溃 ID。
如果您希望 Breakpad 将 .dump 和 .extra 文件保留在您的计算机上以便您可以在本地检查它们,则将 MOZ_CRASHREPORTER_NO_DELETE_DUMP 环境变量设置为 1。
Ubuntu:Ubuntu 团队的说明
openSUSE:openSUSE 的常规说明
Fedora:捕获堆栈跟踪
Gentoo:使用 GDB 调试