rr-debugger / rr-debugger/rr

rr replay + QBDI / Frida

Open
#3,340 1 comment 0 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

I would like to record some function calls and their params, and maybe some other variable assignments inside the function.

As I understand it, to retrieve this information, rr must re-execute the application, and gdb must then break on every instruction for which I want to examine memory. This would be slow I imagine.

I believe that Pernosco (rr remix) uses binary instrumentation during a replay to store the state of the program after every instruction, at the trade-off of taking a lot of CPU, time, and space to achieve this.

I would like to use binary dynamic instrumentation to record only certain function calls and assignments to avoid these costs.

From the rr remix article:

We plan to follow up with some more posts documenting interesting design decisions in remix and how they contribute to these results. Probable topics:

  • The basic remix architecture and how it integrates into rr
  • Fixing regular rr's limitations on trace portability and target hardware
  • Leveraging knowledge of the future to improve the efficiency of binary rewriting
  • The mystery of efficient branch-and-link instructions on x86-64
  • Optimizing non-optimized code: leveraging hardware return address prediction in binary instrumentation
  • Optimizing non-optimized code: dataflow analysis

Have there been any more details on rr remix released?

Any further thoughts on open-sourcing?

Would using a framework like QBDI / Frida be the right approach or would something more low-level be needed to work with rr replay?

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

No rr source files, tests, or entry points are identified. Start by reviewing rr replay and the linked rr remix article, then establish whether selective binary instrumentation is a scoped, accepted feature; the issue needs a concrete design and implementation plan before work can be considered done.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, linux
Domain
devtools, operating-systems, reverse-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
18/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.