はじめに
rr
は非常にパワフルなデバッグツールだがコマンドラインで使うと素のgdbと同じくかなり使いづらい
そこで rr
を vscode
から利用する設定を行う
具体的的には rr
に vscode
を接続する設定をすれば良い
rr を vscode から利用する設定
launch.json 設定ファイルをの作成
-
vscode
を立ち上げる -
vscode
でソースコードを保存しているディレクトリを開く -
Ctrl+Shift+D
でDebug viewを開いてlaunch.json
作成を選択 - 下記の設定を
launch.json
に追加する
設定ファイル
Firefoxのデバッグ用の設定を参考にする
-
rr
を起動するときにlocalhost:50505
をデバッグポートとして起動してvscode
からの接続を待つ -
vscode
でF5
でデバッグ起動するとlocalhost:50505
へ接続してrr
を使ってデバッグ -
program
等は環境に合わせて修正
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "rr",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": [],
"miDebuggerServerAddress": "localhost:50505",
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"linux": {
"MIMode": "gdb",
"setupCommands": [
{
"description": "Setup to resolve symbols",
"text": "set sysroot /",
"ignoreFailures": false
}
]
},
"osx": {
"MIMode": "gdb"
},
"windows": {
"MIMode": "gdb"
}
}
]
}
vscodeを使ってデバッグする
rr record <実行ファイル>
で実行し、 replay
でデバッグ開始
$ rr record ./a.out
$ rr replay -s 50505 -k
vscode
でデバッグしたいファイルを開いて F5
rr
に接続してデバッグを開始する
残念ながらvscodeのGUIにリバーズ実行のためのボタンが用意されていない
リバース実行したい場合は Debugger Console でコマンド入力が必要
-exec reverse-continue
(-exec rc), -exec reverse-step
(-exec rs)など
rr の使い方
- Instant replay: Debugging C and C++ programs with rr
- Debugging Firefox with rr
- The Chromium Chronicle #13: Time-Travel Debugging with RR
- RR: The magic of record and replay debugging
rr のようなツール
#関連記事