Reverse Debugging Toolのrr

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-nextreverse-stepreverse-continueなどを使うと、過去の状態に戻るコマンドも利用できる。

簡単ですね。

Docker内部で使うときは、--cap-add=SYS_PTRACE --security-opt seccomp=unconfinedオプションを付けてコンテナを起動すればOK (参考)。

スゴイところ

rrのいいところは、テスト実行中やアプリケーションの使用中にバグった時、rr replayで簡単に再現できるところ。 再現性が低いバグの調査なんかに、威力を発揮しそう。

実現方法

この論文に書いてある。 あとでちゃんと見ておきたい。

Engineering Record And Replay For Deployability Extended Technical Report

関連

似たようなことを実現できるツールが他にもある。