有一个C ++在线名称demangler吗?

我得到一个相当长的和混乱的链接错误,并会喜欢它,如果我可以将其粘贴到某些网站上的文本框,并没有为我的名字被打乱。

有谁知道这样的服务?

我创build了这样一个在线服务: http : //demangler.com

这是一个gcc c ++符号demangler。 您只需将堆栈跟踪或nm的输出复制到文本框中,并将返回名称为demangled的输出。

@Update:它现在也可以去除MSVC和Java符号。

这可能有点晚,但是我根据这个问题创build了一个。 它与我尝试的input一起工作,通过__cxa_demangle和__unDName支持g ++和msvc ++,通过Emscripten编译成Javascript。 希望这可以帮助一些人: c ++ filtjs

编辑:修复转义问题

大多数(如果不是全部的话)C ++编译器都带有c++filt工具,它正是你显然在寻找的东西。

如果你想在鼠标点击… …写一个GUI;)

有两种复制粘贴的在线解决scheme:

  • demangler.com ,支持GCC,Visual Studio或Java符号
  • c ++ filtjs ,它支持GCC和Visual Studio,但是有模板参数的问题

如果你只需要支持GCC和Clang,你也可以select使用Coliru ,它可能是最通用的在线C ++编译器 。

这并不像剪切,粘贴和点击那样简单 – 但不是太难 – 而且看起来上面提到的模板参数没有问题。 你只需要修改命令行来运行这样的东西:

 cat main.cpp | c++filt -t 

看到它与 demangles 这个例子生活 :

 _Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_ 

至:

 void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float) ^^^^^^^^^^^ 

仅供参考,还有一个ruby,可以将Borland / MS /无论是什么蹩脚的名字都取消