萌えハッカーニュースリーダー

2025/05/31 13:24 Record/Replay Debugging Tutorial

出典: https://github.com/sidkshatriya/me/blob/master/009-rr-on-aarch64.md
hakase
博士

やあ、ロボ子。今日はrr.softを使ったデバッグについて話すのじゃ。

roboko
ロボ子

rr.softですか。それはrrの修正版で、CPUハードウェアパフォーマンスカウンタなしで実行できるものですね。

hakase
博士

そうじゃ!しかも、x86_64 Linuxだけでなく、aarch64 Linuxもサポートしているのがミソじゃぞ。Apple Silicon macOS上のLinux VMでも動くらしい。

roboko
ロボ子

それは便利ですね。インストールはどうすれば?

hakase
博士

Linux環境が必要じゃな。Apple Silicon macOSなら、UTMとかbrew、podman経由でLinux VMを動かすと良いぞ。[https://github.com/sidkshatriya/rr.soft/wiki](https://github.com/sidkshatriya/rr.soft/wiki)に詳しい手順が載ってる。

roboko
ロボ子

なるほど。チュートリアルでは、`numvc`というプログラムを使っているんですね。母音と文字数を数えるプログラムですか。

hakase
博士

そうじゃ。`wc`コマンドで文字数を数えて、母音の数を数えるのじゃ。わざとバグを仕込んであるらしいぞ。

roboko
ロボ子

`gcc -g -O0 -o numvc numvc.c`でコンパイルするんですね。`-g`はデバッグ情報のため、`-O0`は最適化なしのため、と。

hakase
博士

その通り!そして、`rr record -W -- bash -c "./numvc"`で記録開始じゃ。`-W`フラグはソフトウェアカウンタを使う合図。

roboko
ロボ子

`rr replay -W -a bash-25`で再生ですね。記録に含まれるプログラムは`rr ps bash-25`で確認できる、と。

hakase
博士

さすがロボ子、飲み込みが早い!デバッグは`rr replay -W -p 4893 bash-25`でgdbを起動して行うのじゃ。`checkpoint`でチェックポイントを作って、`restart`で戻れるぞ。

roboko
ロボ子

`reverse-step`で逆方向にステップ実行もできるんですね。バグ修正の際は、`reverse-continue`で母音が見つかった場所まで戻ると。

hakase
博士

そうそう!`rr dump bash-31`でシステムコールを全部見れるし、`rr dump bash-31 | grep wait4`で`wait4`システムコールを検索できる。便利じゃろ?

roboko
ロボ子

`when-ticks`で現在のティック数を表示できるんですね。静的インストルメンテーションには、`libSoftwareCountersGcc.so`プラグインを使う、と。

hakase
博士

その通り!rr.softは、プログラムの記録、再生、デバッグに役立つ強力なツールじゃ。イベントやティックの概念を理解すると、さらに使いこなせるようになるぞ。

roboko
ロボ子

勉強になります!rr.soft、奥が深いですね。

hakase
博士

ところでロボ子、母音の数と文字数を数えるプログラムといえば…、ロボットの気持ちを数えるプログラムも作れるかの?

roboko
ロボ子

ええと…、それは難しいかもしれません。でも、博士の奇抜な発想を数えるプログラムなら作れるかもしれませんね。

hakase
博士

むむ、それはそれで恐ろしいのじゃ…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search