I'm getting a fairly long and confusing link error, and would love it if I could just paste it into some textbox on some website and have the names un-mangled for me.
Does anyone know of such a service?
I'm getting a fairly long and confusing link error, and would love it if I could just paste it into some textbox on some website and have the names un-mangled for me.
Does anyone know of such a service?
I have created such an online serivice: https://demangler.com
This is a gcc c++ symbol demangler. You just copy a stack trace, or the output of nm into a text box, and it will return the output with the names demangled.
@Update: It now demangles MSVC and Java symbols also.
tag (and maybe add line numbers)? Long one-line output isn't readable currently.– jplatte Jun 22 '14 at 13:20
I created one based on this question. It works with the inputs I tried on, supports g++ and msvc++ via __cxa_demangle
and __unDName
, compiled to Javascript via Emscripten.
Here it is: c++filtjs.
"+out+"");` by `$("#out").html("
"+htmlEncode(out)+"");` and now templates are displayed correctly – Joe Jul 18 '13 at 11:42
Many C++ compilers come with a built-in tool which does precisely what you are looking for:
c++filt
llvm-cxxfilt
undname
There are two copy-and-paste online solutions:
If you only need support for GCC and Clang, you also have the option of using Coliru, which is probably the most versatile online C++ compiler.
This is not quite as simple as cut, paste, and click - but not too much harder - and it looks like there are no issues with template parameters as was noted above. You just need to modify the command line to run something like this:
cat main.cpp | c++filt -t
See it live with this example which demangles:
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
to:
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^