Repolode
rr-debugger

rr-debugger/rr

プログラムの実行を記録して決定論的に再生し、gdbに逆実行機能を追加する軽量なLinuxツール。

スター
10,734
フォーク
666
未解決の Issue
477
最終コミット
5 日前

これは何?

rrは、プロセスやスレッドのツリーを含むアプリケーションの実行を記録し、その記録をgdb上で何度でも再生できます。再生では同じ実行が再現されるため、過去のイベントにブレークポイントを設定したり、逆方向にステップ実行したりして、過去の実行中の任意の時点の状態を調べられます。そのため、再現が難しい非決定的なバグの追跡が現実的になります。

rrはgdbを置き換えるのではなく、そのデバッグ体験を拡張します。ハードウェアデータウォッチポイントなどの標準的なgdb機能は再生中も利用でき、逆実行コマンドが追加されます。プロジェクトはC++で書かれており、Linuxを対象としています。

rrの動作には、特定のハードウェアとカーネルのサポートが必要です。Linux kernel 4.7以降と、特定のIntel、AMD Zen、またはAArch64 CPUが必要です。また、ハードウェアパフォーマンスカウンターを仮想化するVMゲストでも実行できます。

主な機能

  • 01マルチプロセス・マルチスレッドアプリケーションの実行を記録し、後から再生できます。
  • 02gdb内で逆実行コマンドを利用できます。
  • 03再生中もgdbのハードウェアデータウォッチポイントを使用できます。
  • 04記録を決定論的に再生できるため、失敗した実行を繰り返し調べられます。
  • 05対応するIntel、AMD Zen、AArch64 CPUを搭載したLinux上で動作します。

ユースケース

  • 必要なときに再現できない断続的なクラッシュや競合状態のデバッグ。
  • 失敗箇所から逆方向にステップ実行し、不正な値を生んだ命令を特定する。
  • 大規模なマルチプロセス・マルチスレッドLinuxプログラムのバグ調査。

クイックスタート

  1. 1

    プロジェクトのwikiでインストールとビルドの手順を確認してください

  2. 2

    システムが要件を満たしていることを確認してください(Linux kernel 4.7以降、対応するIntel、AMD Zen、またはAArch64 CPU)

使う前に知っておきたいこと

  • Linuxのみ対応しており、対応CPUまたはハードウェアパフォーマンスカウンターを公開するVMが必要です。
  • ライセンスはNOASSERTIONと記載されています。使用前にリポジトリのライセンス条項を確認してください。

トピック

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

よくある質問

rr とは?
プログラムの実行を記録して決定論的に再生し、gdbに逆実行機能を追加する軽量なLinuxツール。 rrは、プロセスやスレッドのツリーを含むアプリケーションの実行を記録し、その記録をgdb上で何度でも再生できます。再生では同じ実行が再現されるため、過去のイベントにブレークポイントを設定したり、逆方向にステップ実行したりして、過去の実行中の任意の時点の状態を調べられます。そのため、再現が難しい非決定的なバグの追跡が現実的になります。
rr は無料で使えますか?ライセンスは?
rr は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
rr は今もメンテナンスされていますか?
活発にメンテナンス中。rr の最終コミットは 2026年11月2日 です。
rr は何に使えますか?
必要なときに再現できない断続的なクラッシュや競合状態のデバッグ。 失敗箇所から逆方向にステップ実行し、不正な値を生んだ命令を特定する。 大規模なマルチプロセス・マルチスレッドLinuxプログラムのバグ調査。
rr のインストール方法は?
プロジェクトのwikiでインストールとビルドの手順を確認してください システムが要件を満たしていることを確認してください(Linux kernel 4.7以降、対応するIntel、AMD Zen、またはAArch64 CPU)
rr はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/rr-debugger/rr

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

現在アルファ版の、WindowsとLinuxでローカルx64デバッグを行うネイティブのユーザーモード・マルチプロセス対応GUIデバッガー。

開発ツール#debugger#native-debugging#linker
8779+36 今週451CMIT活発にメンテナンス更新 3 日前