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
似たようなことを実現できるツールが他にもある。