Есть ли онлайн-деманджер для С++?

Я получаю довольно длинную и запутанную ошибку ссылки, и мне бы это понравилось, если бы я мог просто вставить ее в какой-то текстовый ящик на каком-то веб-сайте, и у меня есть имена, искаженные для меня.

Кто-нибудь знает о такой услуге?

Ответ 1

Я создал такую онлайн-услугу: https://demangler.com

Это символ демона ГКК c++. Вы просто копируете трассировку стека или вывод nm в текстовое поле, и он возвращает вывод с разбитыми именами.

@Update: теперь он также разбирает символы MSVC и Java.

Ответ 2

Это может быть немного поздно, но я создал один, основываясь на этом вопросе. Он работает со входами, которые я пробовал, поддерживает g++ и msvС++ через __cxa_demangle и __unDName, скомпилированные в Javascript через Emscripten. Надеюсь, это поможет кому-то: c++filtjs

Изменить: Исправлена ​​проблема экранирования

Ответ 3

Большинство (если не все) компиляторы С++ поставляются с инструментом c++filt, который делает именно то, что вы, по-видимому, ищете.

Если вы хотите его щелкнуть мышью... хорошо написать для него графический интерфейс;)

Ответ 4

Существует два онлайн-решения для копирования и вставки:

Если вам нужна только поддержка GCC и Clang, у вас также есть возможность использовать Coliru, который, вероятно, является наиболее универсальным онлайн-компилятором C++.

Это не так просто, как вырезать, вставить и щелкнуть - но не слишком сложно - и похоже, что нет никаких проблем с параметрами шаблона, как было отмечено выше. Вам просто нужно изменить командную строку, чтобы запустить что-то вроде этого:

cat main.cpp | c++filt -t

Посмотрите вживую на этом примере, который разбирает:

_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_

в:

void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
           ^^^^^^^^^^^

Ответ 5

FYI, также есть камень Ruby, чтобы развернуть Borland/MS/любые искаженные имена: unmangler