Скомпилированные имена символов Rust и C++ "искажены" (mangled) — закодированы в компактную ASCII-форму, упаковывающую пространства имён, обобщённые аргументы и сигнатуры функций. _ZN4core3fmt5Write9write_fmt17h... не предназначен для чтения человеком, но информация в нём важна: какой crate, какой модуль, какая функция. WASM Демангл распаковывает это прямо в браузере.
Два способа использования:
- Один символ — вставьте искажённое имя и увидите его демангл мгновенно по мере ввода. Поддерживает C++ Itanium (
_Z…), устаревшую Itanium-основанную схему Rust (_ZN…17h[хеш]) и новую схему Rust v0 (_R…). - Массовое сканирование — загрузите файл
.wasm, и инструмент извлечёт каждое имя функции из отладочной секции "name" модуля плюс все имена экспортов, а затем демангл их всех сразу в таблицу, из которой можно скопировать или экспортировать в CSV.
Слово о честности, потому что здесь это важно: демангл C++ Itanium покрывает распространённое подмножество ABI (вложенные имена, шаблоны, подстановки, операторы) и проверен против c++filt на реальных символах. Устаревшая схема Rust строится поверх Itanium и так же надёжна. Схема Rust v0 значительно сложнее — этот инструмент восстанавливает путь (crate, модуль, имена функций) на основе наилучших усилий, но не восстанавливает полный список обобщённых аргументов или структуру impl/trait, а обратные ссылки и идентификаторы в кодировке punycode остаются нерасшифрованными. Каждый результат v0, включающий это упрощение, помечается как "частичный" с примечанием, точно объясняющим, чего не хватает — никогда не выдаётся за полный демангл. Символ, не соответствующий ни одной известной схеме, показывается как есть, чётко помечен как нераспознанный, никогда не отбрасывается молча.
Полезно при аудите стороннего модуля .wasm, разборе трассировки стека при сбое, или просто при изучении того, что на самом деле содержит скомпилированный бинарный файл Rust или C++.
Tiny Online Tools







