2010-12-17 7 views
34

¿Hay algún decodificador de creación de nombres C++ para g ++?Decodificador de creación de nombres C++ para g ++?

+0

otro g ++? :) – ruslik

+15

Algunos chicos pronto responderán 'C++ filt' –

+0

Votando para volver a abrir: http://stackoverflow.com/questions/4465872/why-does-typeid-name-return-weird-characters-using-gcc-and -how-to-make-it-prin requiere claramente que sea desde el interior del código, y solo para los tipos, que nunca aparecen en los archivos de objetos (a diferencia de las funciones). Este suele interpretarse como "en archivos de objetos desde la línea de comandos". –

Respuesta

48

Usted puede utilizar C++ filt a demangle C++ símbolos. Por ejemplo

$ c++filt -n _Z1fv 
f() 
2

Usted también puede estar interesado en la opción -C de objdump:

objdump -CSr main.o 

cuales demangling referencias de reubicación como:

char *sn = new char[4]; 
10: bf 04 00 00 00   mov $0x4,%edi 
15: e8 00 00 00 00   callq 1a <main+0x1a> 
         16: R_X86_64_PC32  operator new[](unsigned long)-0x4 

Sin -C sería una muestra del nombre revuelto _Znam .

Consulte también: Can objdump un-mangle names of C++ template functions?

También hay algunos demanglers línea mencionados al igual que Is there an online name demangler for C++?http://demangler.com/ Si existe, hay SaaS de ella.

nm también tiene una opción de -C.

+0

o incluso 'objdump -CSr main.o | menos --pattern = _Znam' –

Cuestiones relacionadas