Folia
← 返回头版

Nix 包管理器为确定性虚拟机调试工具提供核心功能

Rewind VM 是一个确定性虚拟机工具,将每次 Nix 构建的运行都视作其输入的纯函数1。该工具通过重现和解决 Nix 构建中的竞态条件来帮助开发者调试,集成了源代码面板、堆栈帧、线程跟踪、GDB 支持等功能1。在测试中,银行账户示例在 16 核笔记本电脑上的 1000 次运行中出现 396 次资金丢失,而单核运行 1000 次则零出现,凸显了竞态条件的随机性1。

通过 rewind check 命令,可在受扰动的调度下重新运行构建,并将首次失败缩小到单一步骤1。例如,针对银行账户示例运行该命令耗时 11 秒,定位到第 3237 步是决定性步骤1。Rewind 工具还支持书签、比较选项卡等功能,以及通过 rewind gdb 命令在运行的任何步骤打开 GDB 而不改变记录1。

Nix 包管理器已经自动提供了调试器所需的大部分复杂功能1。它通过精确的输入管理确保可复现性,并通过 debuginfod 为任何二进制文件提供调试符号和源代码访问,包括 Linux 内核1。


来源

  1. Hacker NewsNix wrote half of my debugger

评论