是否有一个 C + + 的在线名称解密器?

我得到了一个相当长的和令人困惑的链接错误,如果我可以只是粘贴到一些网站上的文本框,并有我的名称没有混乱。

有人知道这种服务吗?

58761 次浏览

大多数(如果不是全部的话) C + + 编译器都带有 c++filt工具,它可以准确地完成您显然想要的任务。

如果你想在鼠标上点击它... ... 那么为它编写一个 GUI;)

这可能有点晚,但我创建了一个,基于这个问题。它支持我试用过的输入,通过 _ _ cxa _ demangle 和 _ _ undName 支持 g + + 和 msvc + + ,通过 Emscripten 编译成 Javascript。希望这对某些人有所帮助: C + + filtjs

编辑: 修正了转义问题

我创建了这样一个在线服务: 译自: 美国《 https://demangler.com 》杂志网站(https://demangler.com)

这是一个 gcc + + 符号去除器。您只需将一个堆栈跟踪或 nm 的输出复制到一个文本框中,它就会返回名称已经去掉的输出。

@ Update: 它现在也要求使用 MSVC 和 Java 符号。

顺便说一句,还有一个 Ruby gem 可以用来分解 Borland/MS/任何混乱的名字: 拆卸工

有两种复制粘贴在线解决方案:

  • Demangler.com ,它支持 GCC、 Visual Studio 或 Java 符号
  • C + + filtjs ,它支持 GCC 和 Visual Studio,但是在模板参数方面有问题

如果您只需要对 GCC 和 Clang 的支持,那么您还可以选择使用 Coliru,它可能是最通用的 在线 C + + 编译器

这并不像剪切、粘贴和单击那样简单,但也不会太难,而且看起来模板参数没有上面提到的问题。您只需要修改命令行来运行以下内容:

cat main.cpp | c++filt -t

请看下面这个例子:

_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)
^^^^^^^^^^^