記録と再生を備えたMozilla Fast Debugger

Mozillaは、多くの人にとって生活を楽にするツールをリリースしました。これは、プログラムの進行状況の記録とその後の再生のためのLinux用RRフレームワークです。 再生は完全に決定論的です。つまり、同じレジスタとメモリアドレスを使用し、常に同じ障害(ある場合)を使用します。 言い換えれば、テストを際限なく実行でき、バグが表示されたらすぐに、好きなだけレコードをスクロールしてオフラインでゆっくり学習します。 すべてのプロセスおよびスレッドツリーが記録されます。



RRは、予測できないバグを正確に再現するように設計されています。 そのような場合、標準ツールを使用してデバッグする場合、プログラムを再度実行することは意味がありません。バグが再び表示されるという事実ではありません。 この問題は常に開発者の生活を台無しにします。 そのため、Mozillaはそのようなフレームワークを作成することにしました。



RRはデバッグを新しいレベルに引き上げます。昼食に出る前に、さまざまなパラメーターを使用してテスト用のスクリプトを残します。戻ったとき、RRはエラーのある実行を少なくとも1つ書き込みます。 このエントリをスクロールして、問題の内容を理解できます。



理論的には、GDBはプログラムの実行を巻き戻すこともできますが、実際にはRRのこの機能はより良く実装されています。 主なことは、パフォーマンスの問題を解決できたことです。プログラムは通常の実行とほぼ同じ速度で再生されます。これは、RRが変化するフラグメントのみを記録し、プログラムの大部分に触れないためです。



この図は、記録されたプログラムの記録速度と再生速度がネイティブ実行(オーバーヘッド)とどの程度異なるかを示しています。





比較的大きなオーバーヘッドのreftestは、Gecko for Linuxの現在の構成がXサーバーを介して機能するためです。



残念ながら、これまでのところデバッガはx86 32ビットプロセスのみをサポートしていますが、この制限はおそらく将来のバージョンで削除されるでしょう。 最初のバージョンのもう1つの制限は、シングルコアマシンのみのエミュレーションです。 パラレルコンピューティングを記述するために、ハードウェアサポートなしで行うことはできないため、この制限を取り除くことはできません。 それでも、デバッガーはこれまでのところ、Intel Ivy BridgeおよびSandy Bridgeプロセッサーでのみ動作します。



デバッグツールRR 1.0の作成には、Mozilla開発者から2年かかりました。 Githubコード






All Articles