分析 Firefox 的崩溃数据

如果 Firefox 在自动化过程中崩溃,检索生成的崩溃数据(也称为 minidump 文件)并将其报告给我们非常有用。

检索崩溃数据

因为 geckodriver 为 Firefox 创建了一个临时用户配置文件,它还会在测试完成后自动删除所有其文件夹。这也意味着如果 Firefox 崩溃,创建的 minidump 文件将会丢失。为了防止这种情况,必须改用自定义配置文件。以下代码展示了在 Mac OS 上使用 Python Selenium 绑定的示例

import tempfile

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

# Custom profile folder to keep the minidump files
profile = tempfile.mkdtemp(".selenium")
print("*** Using profile: {}".format(profile))

# Use the above folder as custom profile
opts = Options()
opts.add_argument("-profile")
opts.add_argument(profile)
opts.binary = "/Applications/Firefox.app/Contents/MacOS/firefox"

driver = webdriver.Firefox(
    options=opts,
    # hard-code the Marionette port so geckodriver can connect
    service_args=["--marionette-port", "2828"]
)

# Your test code which crashes Firefox

现在执行使用 Selenium 的测试,这将触发 Firefox 的崩溃,并将用户配置文件中的所有文件保留在上述路径中。

要检索 minidump 文件,请导航到该文件夹并查找名为 minidumps 的子文件夹。它应该至少包含一个文件系列。一个文件扩展名为 .dmp,另一个文件扩展名为 .extra。这两个文件都是必需的。如果存在更多崩溃文件,请全部获取。

将这些文件(最好压缩成 zip 文件)附加到在 Github 上创建的 geckodriver 问题 中。

获取崩溃的详细信息

更高级的用户可以自行上传生成的 minidump 文件,并接收有关崩溃的详细信息。因此,请找到 崩溃报告器 文件夹,并将所有生成的 minidump 文件复制到 pending 子目录中。确保 .dmp.extra 文件都存在。

完成后,您还可以 查看崩溃报告

如果您提交了崩溃报告,请不要忘记将崩溃报告的链接添加到 geckodriver 问题中。

启用崩溃报告器

默认情况下,geckodriver 会禁用崩溃报告器,因此它不会将崩溃报告提交到 Mozilla 的崩溃报告系统,也不会干扰测试。

可以使用命令行参数 --enable-crash-reporter 覆盖此行为。您可以在提交后 查看崩溃报告 并与我们共享。

**重要**:仅当上述解决方案不起作用时,才启用崩溃报告器。