Sto ricevendo un errore di collegamento abbastanza lungo e confuso e mi piacerebbe se potessi semplicemente incollarlo in una casella di testo su qualche sito Web e avere i nomi non alterati per me.
Qualcuno sa di un tale servizio?
Sto ricevendo un errore di collegamento abbastanza lungo e confuso e mi piacerebbe se potessi semplicemente incollarlo in una casella di testo su qualche sito Web e avere i nomi non alterati per me.
Qualcuno sa di un tale servizio?
Risposte:
Ho creato un tale servizio online: https://demangler.com
Questo è un demangler di simboli gcc c ++. Basta copiare una traccia dello stack, o l'output di nm in una casella di testo, e restituirà l'output con i nomi smembrati.
@Update: ora separa anche i simboli MSVC e Java.
white-space: normal
o qualcosa di simile al tag responseSection <pre> (e magari aggiungere i numeri di riga)? L'output lungo di una riga non è attualmente leggibile.
Potrebbe essere un po 'tardi, ma ne ho creato uno, sulla base di questa domanda. Funziona con gli input che ho provato, supporta g ++ e msvc ++ tramite __cxa_demangle e __unDName, compilati in Javascript tramite Emscripten. Spero che questo aiuti qualcuno: c ++ filtjs
Modifica: risolto il problema di fuga
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
.
La maggior parte (se non tutti) i compilatori C ++ sono dotati di uno c++filt
strumento che fa esattamente quello che apparentemente stai cercando.
Se lo vuoi con un clic del mouse ... scrivi una GUI per esso;)
objdump -dr ./AClass.o | c++filt | less
(disassembler) o nm ./AClass.o | c++filt | less
(elenco di simboli all'interno del file oggetto)
Esistono due soluzioni online di copia e incolla:
Se hai solo bisogno del supporto per GCC e Clang, hai anche la possibilità di usare Coliru , che è probabilmente il compilatore C ++ online più versatile .
Non è così semplice come tagliare, incollare e fare clic, ma non troppo difficile, e sembra che non ci siano problemi con i parametri del modello come notato sopra. Hai solo bisogno di modificare la riga di comando per eseguire qualcosa del genere:
cat main.cpp | c++filt -t
Guardalo dal vivo con questo esempio che demangles:
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
per:
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^