c++ demangler

¿Hay un nombre en línea demangler para C++?



(5)

Recibo un error de enlace bastante largo y confuso, y me encantaría si pudiera pegarlo en algún cuadro de texto en algún sitio web y tener los nombres sin destrozar para mí.

¿Alguien sabe de tal servicio?


Esto podría ser un poco tarde, pero creé uno, basado en esta pregunta. Funciona con las entradas que probé, es compatible con g ++ y msvc ++ a través de __cxa_demangle y __unDName, compilado en Javascript a través de Emscripten. Espero que esto ayude a alguien: c++filtjs

Editar: solucionado el problema de escape


FYI, también hay una gema de Ruby para demandar a Borland / MS / lo que sea que haya sido un nombre destrozado: unmangler


Hay dos soluciones en línea para copiar y pegar:

Si solo necesita soporte para GCC y Clang, también tiene la opción de usar Coliru , que es probablemente el compilador de C ++ en línea más versátil.

Esto no es tan simple como cortar, pegar y hacer clic, pero no demasiado, y parece que no hay problemas con los parámetros de la plantilla como se señaló anteriormente. Solo necesita modificar la línea de comando para ejecutar algo como esto:

cat main.cpp | c++filt -t

Véalo en vivo con este ejemplo que exige:

_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_

a:

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


He creado una serivice en línea: demangler.com

Este es un reclamo de símbolo gcc c ++. Simplemente copie una traza de pila, o la salida de nm en un cuadro de texto, y devolverá la salida con los nombres exigidos.

@Update: ahora también exige símbolos de MSVC y Java.


La mayoría (si no todos) los compiladores de C ++ vienen con la herramienta c++filt , que hace exactamente lo que usted aparentemente busca.

Si lo desea con el clic del mouse ... bien, escriba una GUI para ello;)