42

是否有任何用于 g++ 的 C++ 名称修饰解码器?

4

3 回答 3

65

您可以使用 c++filt 对 c++ 符号进行分解。例如

$ c++filt -n _Z1fv
f()
于 2010-12-17T08:31:35.320 回答
14

c++filt,这里的示例用法:

我们可以看到 C++ 编译器的模板实例化代码吗

于 2010-12-17T08:30:36.110 回答
6

您可能还对以下-C选项感兴趣objdump

objdump -CSr main.o

哪个 demangles 重定位引用,如:

  char *sn = new char[4];
10:   bf 04 00 00 00          mov    $0x4,%edi
15:   e8 00 00 00 00          callq  1a <main+0x1a>
                      16: R_X86_64_PC32       operator new[](unsigned long)-0x4

没有-C它会显示损坏的名称_Znam

另请参阅:objdump 可以取消 C++ 模板函数的名称吗?

在Is there an online name demangler for C++?中也提到了一些在线解译器?像http://demangler.com/如果它存在,就有它的 SaaS。

nm也有一个-C选项。

于 2015-06-05T12:11:57.787 回答