使用 Pernosco 调试 Firefox

此页面旨在帮助 Firefox/Gecko 开发人员开始使用 Pernosco 调试 Firefox。

Mozilla 员工拥有 Pernosco 的付费订阅,并鼓励使用它。贡献者也可以使用 Pernosco。 免费账户 提供 5 次上传,以查看它是否适合您的工作流程。

先决条件

  • 您需要能够生成 rr 跟踪。请参阅 使用 rr 调试 Firefox

  • 员工还可以通过 Treeherder 为某些 CI 作业失败生成 Pernosco 跟踪。

工作流程

在高级别,使用 Pernosco 包括记录跟踪,然后上传跟踪进行处理。

安装 Pernosco 配置

如果您使用自己的 Pernoso 帐户,请按照 此处 的说明安装您的凭据。

Mozilla 员工,请参阅 Pernosco 安装和配置文档 获取凭据。

通常,您需要

  • 您的电子邮件在 ~/.config/pernosco/user

  • 您的组在 ~/.config/pernosco/group

  • 您的密钥在 ~/.config/pernosco/user_secret_key

收集本地跟踪

通常,要收集跟踪,请按照 使用 rr 调试 Firefox 中记录 rr 跟踪的说明进行操作。但是,要收集与 Pernosco 兼容的本地 rr 跟踪,您需要禁用一些不兼容的 CPU 功能(目前仅限 AVX-512)

在英特尔机器上,您可以在命令行中禁用此功能。为了简化操作,可以创建如下所示的 shell 脚本 pernosco-record

#!/bin/bash

rr record --disable-avx-512 "$@"

在命令行中替换纯 rrmach --debugger pernosco-record

在 AMD Zen 机器上,您可以在启动时禁用 AVX-512 和 5 级页面表。

在 Debian 派生发行版上,这涉及编辑 /etc/default/grub 并将 clearcpuid=304,no5lvl 添加到 GRUB_CMDLINE_LINUX_DEFAULT 中,然后运行 sudo update-grub

上传跟踪

找到您感兴趣的跟踪 ~/.local/share/rr/<trace>,并调用 pernosco-submit

pernosco-submit upload ~/.local/share/rr/<trace> PATH_TO_CENTRAL --title "Name Of Trace"

其中 PATH TO CENTRAL 是您构建源代码的路径,检出到与构建匹配的修订版。

最后一个记录的跟踪始终是符号链接,因此您也可以使用 ~/.local/share/rr/latest-trace

等待邮件

处理跟踪后,您将收到一封包含跟踪链接的电子邮件。祝您狩猎愉快!

Treeherder 工作流程

您还可以尝试通过 Treeherder 界面生成跟踪。在合格的失败测试中,在“工件和调试工具”中,您将看到一个链接到

../../_images/record-this-failure.png

此链接将带您进入自助重现器

../../_images/self-service.png

选择一个测试和一个计数,以及是否应使用 chaos-mode,然后单击重现。此时需要等待很长时间;页面将在重现开始时使用 alert 对话框通知您。