bun.report 是 Bun 的新崩溃报告器

主要观点:

  • Bun 有超过 2600 个未解决的 GitHub 问题,CLI 工具如 Bun 上传核心转储存在隐私、性能和可执行文件大小方面存在权衡,因此开发了新的紧凑的 Zig 和 C++崩溃报告格式。
  • 新的崩溃报告格式为 ~150 字节的 URL 且不含个人信息,点击后可打开预填充的 GitHub 问题表单,包含重映射的堆栈跟踪编码在 URL 中。
  • 为使函数地址有用,通过从二进制的基地址减去地址来解决地址问题,不同平台有不同的 API,对于 Linux 和 MacOS 主应用二进制为第一个模块,Windows 可通过比较模块名称确定。
  • bun.report 的 URL 结构包含平台、子命令、提交 SHA、功能标志、堆栈跟踪地址、崩溃类型和崩溃消息等信息,使用 VLQ 编码堆栈跟踪地址以保持 URL 较短。
  • “Features”是 URL 中编码的 64 位整数,每个位对应 Bun 中使用的特定功能,通过 Zig 的编译时元编程创建位域。
  • 与核心转储相比,新的崩溃报告只发送 Zig/C++堆栈跟踪和其他一些细节,避免发送敏感信息,更好地诊断问题。
  • 开发了一个小的 Webapp 用于测试崩溃报告,地址为 bun.report,Bun 正在旧金山招聘工程师。

关键信息:

  • Bun 有 2600 多个 GitHub 问题,CLI 工具上传核心转储有问题。
  • 新崩溃报告格式及 URL 内容。
  • 使地址有用的方法及不同平台的实现。
  • bun.report 的 URL 结构细节。
  • “Features”的编码方式。
  • 与核心转储的比较。
  • 测试崩溃报告的 Webapp 及招聘信息。

重要细节:

  • macOS 内置崩溃报告需附带调试符号,Linux 约 30MB,macOS 约 9MB,Windows 的.pdb 文件超 250MB。
  • Bun 崩溃时打印的消息包含相关信息及提交 GitHub 问题的链接。
  • 不同平台获取模块基地址的方法及细节。
  • VLQ 编码堆栈跟踪地址的原理及示例。
  • Zig 中创建“Features”位域的代码实现。
  • 测试崩溃报告的 Webapp 地址及功能。
  • Bun 在旧金山招聘工程师的申请地址。
阅读 86
0 条评论