9月7日、Rust公式ブログが「Rust debugging survey 2026 results」と題した記事を公開した。2026年2月に実施したRustデバッグ体験に関する調査(2,300件超の回答)の結果と、今後の改善方針をまとめたものだ。
Rustの年次調査では、デバッグ体験の悪さが毎年上位の課題として挙がり続けている。今回はその原因を深掘りするためのデバッグ専用調査だ。結果として浮かび上がったのは、「デバッガーを使いたいが、使い物にならない」という現場の実態である。
「値の表示が壊れている」が最大の不満——74%以上が経験
最も強烈な数字は、「値の表示が不適切」という痛点を74%以上が経験しているという事実だ。デバッガーでプログラムを止めても、変数の中身が正しく表示されない——これがRustデバッグにおける最大の悩みである。続いて「変数を出力できない」が55%超と高く、デバッガーの基本機能自体が機能していないと感じているユーザーが多数いる実態が浮かび上がった。
問題のある型として、自由回答欄では enum、std::collections::HashMap、std::vec::Vec、String、CString への言及が目立った。いずれもRustコードで日常的に使う型だ。デバッガー上では実装の内部詳細がそのまま表示されてしまい、実際のvariantや格納されている要素が見えないという問題が報告されている。
printデバッグが依然として主役
現在デバッガーを使用していると回答したのは46%にとどまり、残りの半数以上は使っていない。「使わない理由」の第1位は「ログやprint文のほうが速くて簡単」で、81%超が選択した。デバッガーの品質問題が「そもそも使わない」という行動を生んでいる構図だ。
デバッガーを使う場合、IDEからlldbを呼び出す方法が最も多く(print/dbg!マクロを除く)、次いでコマンドラインからgdbを使う形式が続く。OS別に見ると、Linuxではgdb CLIとlldb IDE利用がほぼ拮抗(差は0.4ポイント)、Windows・WSL・macOSではIDE経由のlldbが少なくとも6ポイント差でリードしている。
デバッガーの使い方としては87%がステップ実行、半数強がクラッシュ・ハングしたプロセスのスタックトレース取得に利用している。一方、asyncコードのデバッグに使うのは25%のみだ。非同期処理自体のユースケースの広がりと比較すると、デバッガーがそこでは有効活用されていない実態が浮かぶ。
44%が他言語との混在環境でデバッグ
回答者の44%はRustと他の言語を混在させた状態でデバッグしている。内訳はC(70%超)、C++(43%程度)、Python(20%程度)の順だ。FFIを通じた組み込みや既存コードベースとの統合がいかに多いかを示している。異言語混在のデバッグは単一言語に比べて難易度が高く、デバッグ体験の悪さがより深刻に響く環境でもある。
debugger_visualizer 属性の認知度は低い
Rustには debugger_visualizer というアトリビュートが存在する。モジュールやクレートルートに付与することで、デバッグ情報にファイルを埋め込み、デバッガー上での値の表示を改善できる機能だ。対応フォーマットはMicrosoftのWinDbg等で使われる**Natvisファイル(XML形式でデバッガーの表示方法を定義するもの)と、GDBで使われるGDB pretty printer**(Pythonスクリプトで表示をカスタマイズするもの)の2種類である。
ところが、ライブラリ著者の62%近くがこのアトリビュートを知らないと回答した。知っているが使っていない著者のうち、半数は「メンテする時間がない」、半数近くは「ビジュアライザースクリプトの書き方がわからない」と答えている。認知・習熟の両面でのハードルが、エコシステム全体のデバッグ体験改善を妨げている。
今後の改善方針
調査結果を踏まえ、Rust側は以下を優先課題として挙げている:
enumのデバッガー表示を実際のvariantが見える形に修正するHashMapなどのコレクションを実装詳細ではなく中身が見える形で表示するString・CStringなどの文字列型をテキストとして表示するasyncのデバッグ体験改善(特にスタックトレース)- イテレータや
Futureなどのステートマシンのステップ実行改善 - 主要デバッガーのセットアップ・使用方法のドキュメント整備
値表示の改善に関しては「型の Debug 実装をデバッガーに使わせる」という案が有力候補として挙がっている。ただし、Debug 実装はプログラム内で実際に使用されていなければ最終バイナリに含まれないという制約がある。Rust専用のネイティブデバッガー BugStalker(Rustで書かれており、Rustの型システムを直接理解した上での表示が可能)はすでにこのアプローチを同様の制約付きで実装しており、async のサポートも一部実現している。既存のlldb/gdbとは異なるアプローチとして今後注目される存在だ。
インフラ面では、Google Summer of Code 2026のプロジェクトとしてデバッグ情報とビジュアライザースクリプトのテスト基盤整備が進行中だ。
詳細はRust debugging survey 2026 resultsを参照していただきたい。