はじめに
デバッグツールとして非常に役に立ちそうな rr
だが、意外と情報が少ない
特に、たまにしか発生しない不具合の解析に特に有意義だと考えられるので rr
の情報をまとめる
ソフトウェアの不具合の発生原因を調査するため便利ツール rr
このツールの凄いところは、、、
- 不具合発生するまでの一連の流れをすべて記録して
- それを再生することが出来ること
- 巻き戻し再生も可能
- 同等のマシンであれば記録と再生を別のマシンで行うことも可能
つまり、起きた不具合を確実に再現することが可能であり、その不具合の根本原因を探るために記録を巻き戻して変数
の内容が確認できる。
また、テスターが不具合発生を記録しておき、エンジニアが再生して不具合を調査する、というような不具合解析も可能となる。
rr とは?
rr
の公式ページでの rr
の紹介
rr aspires to be your primary C/C++ debugging tool for Linux, replacing — well, enhancing — gdb. You record a failure once, then debug the recording, deterministically, as many times as you want. The same execution is replayed every time.
rr の基本機能
- アプリケーションの実行を記録する
- 記録内容を再生する
- 記録内容をパッケージにしてどこでも再生可能にする
rr の利用方法
$ rr record ./a.out args
$ rr replay
$ rr pack
rr を実際に使ってみる
Instant replay: Debugging C and C++ programs with rr
rr の欠点
- 複数スレッドの同時実行記録はできない
- 記録していないプロセスとの共有メモリの競合
- 記録するため実行に時間がかかる(再生は早い)
Ubuntu での rr のインストール方法
x64向けのUbuntu向けは rr
パッケージ が用意されている
sudo apt-get update
sudo apt-get install rr
参考資料
- 公式サイト
- ソースコード
- レコーディング&リプレイデバッグツール rr
- Instant replay: Debugging C and C++ programs with rr
- (Reverse Debugging Toolのrr)[Reverse Debugging Toolのrr]
小ネタ
-
rr
という固有名詞とは思えない名前のため、 Google で検索する際には"rr"
と"
で囲っておかないとrr
関連の検索がうまくいかないことに注意 - 5.4.0からAArch64も実験的にサポート開始
関連記事