rr-debugger / rr-debugger/rr

Implement persistent checkpoints

Open
#2,184 40 comments 9 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
10.7k
Forks
662
Avg merge
2d 3h
Merged PRs (30d)
2

Description

We could speed up the debugging process by allowing the trace to contain persistent checkpoints. Here are some features we could support:

  • A rr create-checkpoints command that does a full replay of a trace and periodically saves checkpoints of the state into the trace directory.
  • Make rr replay -g <N> start replay from the most recent persisted checkpoint.
  • Make rr replay load persisted checkpoints during reverse execution.
  • Make rr record optionally save checkpoints periodically into the trace directory to speed up the above operations.

The minimal implementation that would be useful would be the first two features. Other features could be added on top of that.

The main issues are the mechanics of saving and restoring checkpoints and the format of the persisted checkpoint data.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by examining rr's existing checkpoint save and restore mechanisms, trace-directory handling, and replay entry points. Then investigate the proposed rr create-checkpoints command and rr replay -g <N> behavior. Done means persistent checkpoint data has a defined format, can be created from a full replay, and lets replay start from the latest checkpoint.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
devtools, reverse-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.