Created on 2018-07-08
Modified on 2018-07-08
Published on 2018-07-09
rrは、Mozillaが開発しているLinux専用のReverse Debugging Tool。
rr: lightweight recording & deterministic debugging
公式サイトを見よう。
$ rr record ./foo --args
$ rr replay
rr replay
を実行するとGDBが起動し、デバッグを開始できる。
run
コマンドでrr record
を実行したときと全く同じ挙動を再現することも出来る。
もちろんbreakpoint
コマンドで、を設定して任意の場所での状態を確認できる。
reverse-next
やreverse-step
、reverse-continue
などを使うと、過去の状態に戻るコマンドも利用できる。
簡単ですね。
Docker内部で使うときは、--cap-add=SYS_PTRACE --security-opt seccomp=unconfined
オプションを付けてコンテナを起動すればOK
(参考)。
rrのいいところは、テスト実行中やアプリケーションの使用中にバグった時、rr replay
で簡単に再現できるところ。
再現性が低いバグの調査なんかに、威力を発揮しそう。
この論文に書いてある。 あとでちゃんと見ておきたい。
Engineering Record And Replay For Deployability Extended Technical Report
似たようなことを実現できるツールが他にもある。