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
阅读项目 wiki 中的安装与编译说明
- 2
确认系统满足要求(Linux 内核 4.7 及以上,支持的 Intel、AMD Zen 或 AArch64 CPU)
使用前须知
- 仅支持 Linux,且需要特定支持的 CPU,或暴露硬件性能计数器的虚拟机。
- 许可证元数据显示为 NOASSERTION,使用前请自行核实仓库的许可证条款。
标签
常见问题
- 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 数据每日更新。
相关项目
为 GDB 提供增强功能的 Python 扩展,面向漏洞利用开发与逆向分析。
8424+11 本周842PythonMIT更新于 3个月前
面向 Windows 和 Linux 本地 x64 调试的原生图形化多进程调试器,目前处于 Alpha 阶段。
8779+36 本周451CMIT维护活跃更新于 3天前
一款面向 Go 语言的调试器,调用简单,使用直观。
2.5万+7 本周2216GoMIT维护活跃更新于 3天前
一款免费的 Windows 系统工具,用于监控资源、分析进程、调试程序并排查恶意软件。
1.6万+50 本周1819CMIT维护活跃更新于 昨天
dnSpy 的非官方延续版本,用于在没有源码时调试和编辑 .NET 与 Unity 程序集。
1.1万+30 本周782C#GPL-3.0更新于 6天前