世界を動かす技術を、日本語で。

新しい視点でRustプログラムを可視化し、デバッグする

概要

  • Terres はRustコミュニティの公式マスコット
  • Ferris の友達として登場
  • ヤドカリ がモチーフ
  • Rustacean ファミリーの一員
  • 親しみやすいキャラクター設定

Terresとは

  • Terres はRustコミュニティにおける公式マスコットキャラクター
  • Ferris の友達として紹介
  • ヤドカリ をモチーフにしたデザイン
  • Rustacean ファミリーの一員として位置付け
  • Rustユーザーに親しまれる存在

Hackerたちの意見

すごく印象的だね!試してみたいけど、RustのOSカーネルをqemuで動かしてるから、使えないみたい。

これはただのトレースビューワーだね。トレースの可視化が標準のトレースビューワーよりもずっと密度が低くて、実行時間に関する有意義な情報も提供してないみたい。chrome://tracingと比べてみて。https://www.chromium.org/developers/how-tos/trace-event-prof... トレースビジュアライザーが20年前にオリジナルのタイムトラベルデバッガーのために発明されたかは分からないけど、少なくとも20年前からタイムトラベルデバッグの可視化には使われてるよ。

確かに、ただのトレースビューワー以上のものだね。ページにも書いてある通り、タイムトラベルデバッガーなんだ。プログラムの実行中に異なる時間のスナップショット間を行き来できるのが面白い。コンパイル言語のRustだと、こういうことをするのはもっと高度なことなんだよね。

いいプロジェクトだね!次のhttps://Rust-Trends.comのニュースレターで紹介するよ。

クールだね、ちょっとGlamorous Toolkit [1]を思い出す。これも最近知ったプロジェクトだよ。試してみるのが楽しみ!こういう「プログラムが動いてる間に説明する」タイプのツールが大好きなんだ。1. https://gtoolkit.com/

今すぐこれを使いたいけど、2つの問題があるんだ:- インターネットからのBashスクリプトがsudoを要求してて、無理だわ - VSCodeのプラグイン?VSCodeは使ってないんだ。Zedからは移行しないよ(Rust開発のためにRustで作られてるから)。助けて、どうやってこれを試せる?

「インターネット」の境界がどこから始まるかによるけど、リポジトリをクローンしてinstall.shを実行すればいいよ。ただ、これは本当に怠け者向けだと思う。結局、GitHubのリリースアーティファクトをダウンロードするだけだからね。 https://github.com/SeaQL/FireDBG.for.Rust/blob/1.81.0/instal... VSCodeが必要だとは思わないし、CLIの使い方に専用のセクションもあるよ。 https://github.com/SeaQL/FireDBG.for.Rust#firedbg-command-li... それに「firedbg open」もファイルのグロビング用の便利なメソッドみたいだし。 https://github.com/SeaQL/FireDBG.for.Rust/blob/1.81.0/comman... ただ、そのリポジトリに.tsファイルやpackage.jsonがないのはちょっと怪しいよね。これがあれば(a)拡張機能が何をするのか(b)自分で.vsixをビルドできるのに。

彼らは、試すための簡単な方法を提供しようとしてるだけだし、Firefoxからのunsafeコードはブランドにとってめちゃくちゃ危険だよ。もちろん、ちょっと時間を取ってbashスクリプトをダウンロードして中身を確認すれば、GitHubからリポジトリをダウンロードしてビルドするのと大して変わらないんだけどね。一般的には、確かに、適当なプログラムを実行したくはないよね。

これはすごくいいね。ユーザーインターフェースも優れてる。使ってるPythontutorを思い出したよ。

デバッガーの視点から見ると、Rustはただのネイティブコード言語に過ぎないよ。DWARFはスタックを取得したり、変数を見つけたり、メモリの塊をデータ構造として解釈する方法を教えてくれる。Rust専用のデバッガーを売り込もうとしてる人は、ただの流行に乗ろうとしてるか、単に騙そうとしてるだけだよ。

関連情報: DWARFを共有リバースエンジニアリングフォーマットとして - https://news.ycombinator.com/item?id=44113026 - 2025年5月(コメント数: 17)

ソースのインストゥルメンテーションに依存しているようだから、言語特有のものだね。

確かにそうだけど、私の経験では、例えばprobe-rsはステップ実行の能力がずっと優れていて、変数の特定もGDBよりずっと良いよ。名前のマングリングの扱い方か何かが関係しているのかもしれないけど、GDBは多くのコンテキストを解釈できなかった。

それはある意味正しいけど、デバッガーのUXを快適にするためには言語特有の要素がたくさんあるよね(コンテナの抽象化、コルーチン、vtable、インターフェースなどを考えてみて)。特にasync rustやTokioはデバッガーにとって扱いが面白くなる。あと、通常は言語(とコンパイラ)特有のゴミがあって、DWARFを使いにくくして特別な処理が必要になることが多い。

これは、Dropboxがrsyncのラッパーに過ぎないのと同じくらい真実だね。

データベースでこれをやりたいな、クエリを調べたりとか。誰かツールの名前知ってる?存在するのは知ってるけど、前に忘れちゃった。

SQL Server Management Studioの実行計画ビューみたいなやつ? https://learn.microsoft.com/en-us/sql/relational-databases/p...

Dequeryが探してるものかもね: https://dequery.io

実際のプログラムをデバッグするのにこれが使われているところを見せてほしいな。実際の作業をしないおもちゃの例は面白くない。実際のプログラムでこれが機能する自信はほぼゼロだよ。

ここはポジティブに行こうよ。これはすごくクールだね。

「シンプルなことはシンプルであるべき。複雑なことは可能であるべき。」 - アラン・ケイ。Rustはこれを本当に体現してると思う。もう少し時間がかかると思うけど、これからもっとRustを見ることになるはずだよ。理由はちゃんとあるしね。