コンパイルされたRustやC++のシンボル名は「マングル」されています — 名前空間、ジェネリック引数、関数シグネチャをコンパクトなASCII形式に詰め込んだものです。_ZN4core3fmt5Write9write_fmt17h...は人間が読むためのものではありませんが、そこに含まれる情報 — どのクレートか、どのモジュールか、どの関数か — は重要です。WASM デマングラーはそれをブラウザ内だけで解きほぐします。
2つの使い方があります。
- 単一シンボル — マングルされた名前を貼り付けると、入力しながら即座にデマングル結果が表示されます。Itanium C++(
_Z…)、RustのItaniumベースの旧マングリング(_ZN…17h[ハッシュ])、新しいv0方式(_R…)に対応しています。 - 一括スキャン —
.wasmファイルをアップロードすると、モジュールのデバッグ用"name"セクションからすべての関数名と、すべてのエクスポート名を抽出し、一度にすべてデマングルして検索可能な表にまとめます。コピーやCSVでのエクスポートも可能です。
ここで重要な、正直さについてのひとこと: Itanium C++のデマングルはABIの一般的な範囲(ネストされた名前、テンプレート、置換、演算子)をカバーし、実際のシンボルでc++filtと照合済みです。Rustの旧方式はItaniumの上に成り立っており、同様に堅牢です。Rustのv0方式ははるかに複雑で、このツールはパス(クレート名、モジュール名、関数名)をベストエフォートで再構築しますが、ジェネリック引数の完全なリストやimpl/trait構造は再構築しません。逆参照やpunycodeでエンコードされた識別子はデコードされないまま残ります。この簡略化を伴うv0の結果はすべて「部分的」とマークされ、何が欠けているかを正確に説明する注記が付きます — 完全なデマングルとして提示することはありません。既知のマングリング方式に一致しないシンボルはそのまま表示され、未認識であることが明示され、黙って除外されることはありません。
サードパーティの.wasmモジュールを監査する際、クラッシュのスタックトレースを理解する際、あるいはコンパイル済みのRustやC++バイナリに実際に何が含まれているかを探る際に役立ちます。
Tiny Online Tools







