Repolode
rr-debugger

rr-debugger/rr

一款轻量级 Linux 工具,可录制程序执行过程并确定性回放,为 gdb 增加反向执行能力。

Star
10,734
Fork
666
未关闭 Issue
477
最近提交
5天前

这是什么?

rr 用于录制应用程序的执行过程,包括进程和线程组成的进程树,录制结果可以在 gdb 下反复回放。由于回放会重现同一段执行,你可以反向单步执行、在过去的事件上设置断点,并检查历史运行中任意时刻的状态,适合排查难以复现的非确定性 bug。

rr 是对 gdb 的扩展而非替代,回放期间仍可使用硬件数据断点等标准 gdb 功能,反向执行命令则是在此基础上新增的。项目使用 C++ 编写,面向 Linux 平台。

rr 依赖特定的硬件和内核支持:需要 Linux 4.7 及以上内核,以及部分 Intel、AMD Zen 或 AArch64 处理器;在虚拟机中运行时,虚拟机需要支持硬件性能计数器的虚拟化。

核心功能

  • 01录制多进程、多线程应用的执行过程,供之后回放。
  • 02在 gdb 中提供反向执行命令。
  • 03回放时仍可使用 gdb 的硬件数据断点。
  • 04确定性回放录像,同一次失败运行可以反复分析。
  • 05支持在 Linux 上运行,适配 Intel、AMD Zen 及 AArch64 处理器。

适用场景

  • 排查偶发崩溃或竞态条件等无法按需复现的问题。
  • 从故障点反向追踪,找出导致错误数值的指令。
  • 调试大型多进程或多线程的 Linux 程序。

快速上手

  1. 1

    阅读项目 wiki 中的安装与编译说明

  2. 2

    确认系统满足要求(Linux 内核 4.7 及以上,支持的 Intel、AMD Zen 或 AArch64 CPU)

使用前须知

  • 仅支持 Linux,且需要特定支持的 CPU,或暴露硬件性能计数器的虚拟机。
  • 许可证元数据显示为 NOASSERTION,使用前请自行核实仓库的许可证条款。

标签

#debugger#gdb#linux#reverse-execution#record-replay#c-plus-plus

常见问题

rr 是什么?
一款轻量级 Linux 工具,可录制程序执行过程并确定性回放,为 gdb 增加反向执行能力。 rr 用于录制应用程序的执行过程,包括进程和线程组成的进程树,录制结果可以在 gdb 下反复回放。由于回放会重现同一段执行,你可以反向单步执行、在过去的事件上设置断点,并检查历史运行中任意时刻的状态,适合排查难以复现的非确定性 bug。
rr 可以免费使用吗?用的什么许可证?
rr 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
rr 还在维护吗?
活跃维护中。rr 最近一次提交是在 2026年11月2日。
rr 适合用来做什么?
排查偶发崩溃或竞态条件等无法按需复现的问题。 从故障点反向追踪,找出导致错误数值的指令。 调试大型多进程或多线程的 Linux 程序。
rr 怎么安装和运行?
阅读项目 wiki 中的安装与编译说明 确认系统满足要求(Linux 内核 4.7 及以上,支持的 Intel、AMD Zen 或 AArch64 CPU)
在哪里获取 rr?
源代码和安装说明在 GitHub 上:https://github.com/rr-debugger/rr

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目