¿Hay un demangler nombre en línea para C ++? [cerrado]
Pregunta
Me estoy poniendo un error de enlace confundiendo bastante largo y, y me encantaría que si tan sólo pudiera pegarla en algún cuadro de texto en algún sitio web y tienen los nombres alterados por la ONU para mí.
¿Alguien sabe de un servicio de este tipo?
Solución
He creado una línea tales serivice: http://demangler.com
Este es un gcc c ++ símbolo demangler. Sólo tienes que copiar un seguimiento de pila, o la salida de nm en un cuadro de texto, y ha de devolver la salida con los nombres recompuestos.
@Update: Ahora demangling MSVC y Java símbolos también.
Otros consejos
Esto podría ser un poco tarde, pero creado uno, en base a esta pregunta. Funciona con las entradas me probé, soportes g ++ y msvc ++ vía __cxa_demangle y __unDName, compilado a través de Javascript emscripten. Esperamos que esto ayude a alguien: C ++ filtjs
Editar: Se ha corregido un problema de escapar
La mayoría (si no todos) los compiladores de C ++ vienen con la herramienta c++filt
lo que hace exactamente lo que aparentemente buscando.
Si usted quiere que el clic del ratón ... bueno escribir una interfaz gráfica de usuario para ello;)
Hay dos copiar y pegar soluciones en línea:
- demangler.com , que soporta GCC, Visual Studio o símbolos Java
- C ++ filtjs , que soporta GCC y Visual Studio, pero tiene problemas con plantilla parámetros
Si sólo necesita apoyo para GCC y Sonido metálico, también tiene la opción de usar Coliru , que es probablemente la más versátil línea compilador de C ++ .
Esto no es tan simple como cortar, pegar, y haga clic en - pero no demasiado difícil - y parece que no hay problemas con los parámetros de plantilla como se señaló anteriormente. Sólo tiene que modificar la línea de comandos para ejecutar algo como esto:
cat main.cpp | c++filt -t
verlo en directo con este ejemplo, que demangling:
_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)
^^^^^^^^^^^
Para su información, también hay una gema Ruby a demangle Borland / MS / lo que sea destrozado nombres: unmangler