We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
开发者_如何学Go Improve this questionI'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.
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.
Most (if not all) C++ compilers come with c++filt
tool which does precisely what you apparently looking for.
If you want it at the mouse click... well write a GUI for it ;)
There are two copy-and-paste online solutions:
- demangler.com, which supports GCC, Visual Studio, or Java symbols
- c++filtjs, which supports GCC and Visual Studio but has problems with template parameters
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)
^^^^^^^^^^^
FYI, there's also a Ruby gem to demangle Borland/MS/whatever mangled names: unmangler
精彩评论