Ich erhalte einen ziemlich langen und verwirrenden Linkfehler und würde es lieben, wenn ich ihn einfach in ein Textfeld auf einer Website einfügen und die Namen für mich entstellen könnte.
Kennt jemand einen solchen Service?
Ich erhalte einen ziemlich langen und verwirrenden Linkfehler und würde es lieben, wenn ich ihn einfach in ein Textfeld auf einer Website einfügen und die Namen für mich entstellen könnte.
Kennt jemand einen solchen Service?
Antworten:
Ich habe einen solchen Online-Service erstellt: https://demangler.com
Dies ist ein gcc c ++ Symbol Demangler. Sie kopieren einfach eine Stapelverfolgung oder die Ausgabe von nm in ein Textfeld und es wird die Ausgabe mit den entwirrten Namen zurückgegeben.
@Update: Es entwirrt jetzt auch MSVC- und Java-Symbole.
white-space: normal
das responseSection <pre> -Tag hinzufügen oder ähnlich (und möglicherweise Zeilennummern hinzufügen)? Lange einzeilige Ausgabe ist derzeit nicht lesbar.
Dies mag etwas spät sein, aber ich habe basierend auf dieser Frage eine erstellt. Es funktioniert mit den Eingaben, die ich anprobiert habe, unterstützt g ++ und msvc ++ über __cxa_demangle und __unDName, kompiliert über Emscripten nach Javascript. Hoffe das hilft jemandem: c ++ filtjs
Bearbeiten: Escape-Problem behoben
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
.
Die meisten (wenn nicht alle) C ++ - Compiler werden mit einem c++filt
Tool geliefert, das genau das tut, wonach Sie anscheinend suchen.
Wenn Sie es per Mausklick wollen ... schreiben Sie eine GUI dafür;)
objdump -dr ./AClass.o | c++filt | less
(Disassembler) oder nm ./AClass.o | c++filt | less
(Liste der Symbole in der Objektdatei)
Es gibt zwei Online-Lösungen zum Kopieren und Einfügen:
Wenn Sie nur Unterstützung für GCC und Clang benötigen, haben Sie auch die Möglichkeit, Coliru zu verwenden , den wahrscheinlich vielseitigsten Online-C ++ - Compiler .
Dies ist nicht ganz so einfach wie Ausschneiden, Einfügen und Klicken - aber nicht zu viel schwieriger - und es scheint, dass es keine Probleme mit Vorlagenparametern gibt, wie oben erwähnt. Sie müssen nur die Befehlszeile ändern, um Folgendes auszuführen:
cat main.cpp | c++filt -t
Sehen Sie es live mit diesem Beispiel, das entwirrt:
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
zu:
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^