me/008-rr-everywhere.md at master · sidkshatriya/me

主要观点:

  • rr调试器进行修改,使其可在无需访问 CPU 硬件性能计数器的环境中运行,即“软件计数器模式”rr,能在更多受限环境如云虚拟机和容器中使用。
  • 介绍程序记录和回放的概念及作用,通过记录和回放可重现程序运行状态,方便调试和理解程序。
  • rr是一个开源的记录和回放调试器,具有广泛的可用性、良好性能等优点,但存在需访问 CPU 硬件性能计数器的限制。
  • 作者对记录和回放系统及rr有多年的喜爱和研究,曾将rr移植到 Rust 并写过相关博客,后因各种原因停止该项目,现在致力于“软件计数器模式”rr的开发。

关键信息:

  • “软件计数器模式”rr通过轻量级动态(和静态) instrumentation 实现在无 CPU 硬件性能计数器环境下运行rr记录和回放。
  • 程序运行时存在诸多非确定性因素导致每次运行不同,记录和回放可解决此问题,记录时保存非确定性方面到日志,回放时插入这些方面。
  • rr是唯一具有多种优点的开源记录和回放系统,但在云虚拟机和容器等环境中受限,因为这些环境通常禁用 CPU 硬件性能计数器。
  • 作者曾将rr移植到 Rust 并写博客,后停止该项目,现在专注于“软件计数器模式”rr的开发。

重要细节:

  • 以 YouTube 视频为例说明记录和回放的确定性,视频上传后不变,可多次观看。
  • 程序运行时的非确定性因素包括用户输入时间、图形界面元素位置、网络调用结果、时间和随机数、文件修改、多线程线程交错等。
  • rr的相关资源包括 arXiv 论文[Engineering Record And Replay For Deployability: Extended Technical Report],以及[https://github.com/rr-debugge...]和[https://github.com/sidkshatri...]等仓库。
  • 构建和运行“软件计数器模式”rr可访问[https://github.com/sidkshatri...]。
  • 作者目前不接受该博客的 Pull Requests,如有重要事项可提 issue。
阅读 8
0 条评论