Rustのデバッグ体験を上げるには
結論をいうと、
の3つを行うとよい。
rust-gdbを使う。
rustは普通のgdbでもある程度戦える。これはrustがデバッグ情報をDWARF形式で出力しているからである。
が、しかしrustに同梱されている、rust-gdbを使ったほうがより便利である。
rust-gdbがなにをやってくれているかというと、GDBのPythonを使って、
VectorやBTreeMapのpretty printingをやってくれる。
例
上記のソースコードをmain.rsというファイル名で保存し、
コンパイルし、rust-gdbを起動する。
のようにして、ベクトルvの中身を表示できる。
こんな感じで、あまり参考にならない情報が表示される。
gdbでもがんばれば中身を見ることは可能だが、非常に手間である。
rust-lldbもある。が私が使ってないのでここでは触れない。
rustのバージョンを上げる。
rustのデバッグ機能はまだまだ開発中であり、新しいバージョンほどやれることが増えている。
例えば、BTreeMapのpretty printingのサポートは最近サポートされた。
gdbのバージョンを上げる。
gdb側でもRustの対応機能は開発中であり、新しいバージョンほどやれることが増えている。
例えば、GDB Newsによると8.1ではtrait objectを表示する機能が追加された。
おまけ:GUIでのデバッグ。
Visual Studio CodeやCLionでできる。
競プロ向けのrustテスト/デバッグ環境を作った - verilog書く人
↑私も自作している。
このようなGUIでのデバッガを起動するときも、背面ではrust-gdb(あるいはrust-lldb)が動いているので、rustやgdbのバージョンはあげておこう。