题
我收到了一个相当长且令人困惑的链接错误,如果我可以将其粘贴到某个网站上的某个文本框中并为我恢复名称,我会很高兴。
有谁知道有这样的服务吗?
解决方案
我已经创建这样的在线serivice: http://demangler.com
这是一个gcc C ++符号demangler。你刚才复制堆栈跟踪,或纳米的输出到一个文本框,它将返回demangled名称的输出。
@Update:现在demangles MSVC和Java符号也。
其他提示
这可能是有点晚了,但我创建了一个基于这个问题。它与我想的投入,支持G ++和MSVC ++通过__cxa_demangle和__unDName,通过Emscripten编译为JavaScript。希望这可以帮助别人: C ++ filtjs
编辑:固定逸出问题
大部分(如果不是全部)C ++编译器来与c++filt
工具,它不正是你显然是在寻找。
如果你想让它在鼠标点击...好为它编写一个GUI;)
有两种复制粘贴在线解决方案:
- demangler.com, ,支持 GCC、Visual Studio 或 Java 符号
- C++filtjs, ,它支持 GCC 和 Visual Studio,但是 模板参数有问题
如果您只需要 GCC 和 Clang 的支持,您还可以选择使用 科利鲁, ,这可能是最通用的 在线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)
^^^^^^^^^^^
仅供参考,还有一个红宝石宝石还原函数的Borland / MS /不管错位的名称: unmangler
不隶属于 StackOverflow