¿Existe un demandante de nombres en línea para C ++? [cerrado]
109
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 desarmar los nombres por mí.
Este es un demandador de símbolos gcc c ++. Simplemente copie un seguimiento 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 MSVC y Java.
Este funcionó para mí, pero no el de la respuesta más popular: _ZN9cdnalizer11rewriteHTMLINS_6apache8IteratorEcEET_RKSsRKNS_6ConfigES3_S3_St8functionIFS3_RKS3_SB_EES9_IFvSsEE
matiu
Tu demandante no puede exigir calificadores de referencia para Itanium. Estoy viendo _ZNR4test1fEv generado por Clang.
Puppy
Gracias, buen sitio! ¿Podría agregar white-space: normalo similar a la etiqueta responseSection <pre> (y tal vez agregar números de línea)? La salida larga de una línea no se puede leer actualmente.
jplatte
1
Deberías ser cuidadoso. La mayoría de las implementaciones de demandantes en el mundo real son horriblemente inseguras y con errores. Básicamente, solo funcionan con nombres alterados que produjo la misma plataforma, pero pueden tener una alta complejidad o errores de memoria en las entradas generales.
Kerrek SB
8
Lo he usado con regularidad. Sin embargo, parece estar inactivo. Era una página muy agradable y útil
chrise
104
Esto puede ser un poco tarde, pero creé uno, basado en esta pregunta. Funciona con las entradas que probé, admite 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
¡Increíble! ¡Gracias! ¿Quizás mencionar "Solicitante de nombre de C ++ en línea" en algún lugar de la página, para que la gente pueda encontrarte a través de Google?
Roman Starkov
1
Bien, debería arreglarse ahora.
nattofriends
3
@Zibri: una "pequeña fuente C" no está en línea. Para eso, use las utilidades existentes de c ++ filt y undname.
nattofriends
1
@nattofriends: Tu herramienta no parece escapar de los corchetes, mira ??_R3?$KxSet@V?$KxSpe@DI@@I@@8.
Mooing Duck
2
Sería muy útil si pudiera solucionar su problema con plantillas que otros han mencionado. Esto ha provocado al menos una pregunta falsa sobre SO.
Shafik Yaghmour
24
La mayoría (si no todos) de los compiladores de C ++ vienen con c++filtherramientas que hacen precisamente lo que aparentemente estás buscando.
Si lo desea con el clic del mouse ... escriba una GUI para ello;)
Lo quiero con un mínimo esfuerzo en lugar de con un clic del mouse :) Bueno, no lo necesito muy a menudo de todos modos.
Roman Starkov
3
mi caso de uso habitual para c ++ filt es objdump -dr ./AClass.o | c++filt | less(desensamblador) o nm ./AClass.o | c++filt | less(lista de símbolos dentro del archivo de objeto)
Dummy00001
2
La mayoría de los compiladores no son GCC. Los compiladores que no son GCC no incluyen c ++ filt. Por inducción, la mayoría de los compiladores no envían c ++ filt.
Inspectable
9
Hay dos soluciones en línea para copiar y pegar:
demangler.com , que admite símbolos GCC, Visual Studio o Java
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 mucho más difícil, 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:
Respuestas:
He creado un servicio en línea de este tipo: https://demangler.com
Este es un demandador de símbolos gcc c ++. Simplemente copie un seguimiento 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 MSVC y Java.
fuente
white-space: normal
o similar a la etiqueta responseSection <pre> (y tal vez agregar números de línea)? La salida larga de una línea no se puede leer actualmente.Esto puede ser un poco tarde, pero creé uno, basado en esta pregunta. Funciona con las entradas que probé, admite 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: problema de escape solucionado
fuente
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
.La mayoría (si no todos) de los compiladores de C ++ vienen con
c++filt
herramientas que hacen precisamente lo que aparentemente estás buscando.Si lo desea con el clic del mouse ... escriba una GUI para ello;)
fuente
objdump -dr ./AClass.o | c++filt | less
(desensamblador) onm ./AClass.o | c++filt | less
(lista de símbolos dentro del archivo de objeto)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 mucho más difícil, 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:
Véalo en vivo con este ejemplo que exige:
a:
fuente
Para su información, también hay una joya Ruby para exigir Borland / MS / cualquier nombre destrozado: unmangler
fuente