问题标签 [demangler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1549 浏览

c++ - 什么是 gcc 名称修改中的“析构组”符号

https://stackoverflow.com/a/6614369/1091587简要介绍了当您阅读使用“gcc3”类型名称修饰编译的程序的符号表时出现的析构函数类型(D0、D1、D2)。还有对应的构造函数C0/C1/C2。对于 g++-4.7(可能更早),出现了一个新的 ctor/dtor 对,即 C5/D5,但仅作为调试符号。

demangler 源将 D5 对象称为“gnu_v3_object_dtor_group”,但 dtor 组到底是什么,它有什么用处?clang++-3.3 不会发出它,并且http://gcc.gnu.org/ml/gcc-patches/2011-11/msg00383.html表明它可能与 gcc 中的新事务内存功能有关。

0 投票
0 回答
313 浏览

profiling - 使用 perf 分析 D 程序时去除 D 符号

我刚刚在 Linux 上发现了出色的工具 perf。

我用这个描述了一个 D 程序,但是当我打电话时

符号没有被破坏。

我知道,ddemangle但这仅适用于批处理模式。我总是可以将输出转储到文件中以供查看。但是,如果有人在将符号添加到 perf 数据库文件之前找到了对符号进行解码的解决方案,那就太好了。

0 投票
1 回答
5553 浏览

g++ - 如何使用 cmake 设置 g++ 的标志,以便 gprof 可以解散?

如何在 CMakeLists.txt 中为 GNU g++ 的编译器和链接器设置 gprof 标志?

我目前的做法,

不允许 gprof 对 C++ 函数进行分解。有任何想法吗?(我使用的是 C++11)

0 投票
1 回答
2124 浏览

c++ - 如何将 std::string 分解为 std::string

一段时间以来,我一直在使用一些解构代码来帮助进行一些调试,而不必编写数千行动态强制转换或实现返回类名的虚函数。

这段代码背后的想法很简单,输出我们实际使用的类。虽然在切换到 Ubuntu 14.04 后,我不再能够使用 clang 和 c++-11/c++-14 标准进行编译,所以我已经切换到使用 libc++ 而不是 libstdc++。

切换到 libc++ 后,我注意到当我对 'std::string' 进行 demangle 时,它​​不再输出 'std::string',而是输出:

当然这是正确的,因为 std::string 是 std::basic_string 的 typedef。尽管据我所见,在 libc++ 和 libstdc++ 中,这都是使用 typedef 以相同的方式定义的。所以我真的不明白为什么通过切换到 libc++ 来改变这种拆解。

有人知道为什么这是不同的,如果 CLASS 是“std::string”,如何获得“std::string”,当 CLASS 是“myTemplate”时如何获得“myTemplate”?

提前Tnx!

JVA笔

0 投票
1 回答
1072 浏览

c++ - 视觉工作室 typeid().name 上的 boost::core::demangle

我正在尝试获取一个字符串,该字符串在 Windows(Visual Studio 2010)上报告一个没有装饰的类类型,但根本没有成功。

由于 UnDecorateName 不起作用,我正在使用 boost 库。

如何从上面的代码中仅获取“MyObject”作为输出字符串?现在我不能使用 c++11 方法。

0 投票
0 回答
28 浏览

c++ - 一种在 C++ 中用最少代码确定派生类类型的方法

我有一个具有许多子类和 4 级继承的类(说 A)。我在基类中编写了函数类型来确定类的类型,如下所示:

这是使用此代码:

但不是这段代码:

我有一个vector<A>可以采用任何子类的。有没有办法强制 A 返回派生类的类型?

0 投票
1 回答
3361 浏览

c++ - Boost 文件系统库中未解析的外部符号(错误 LNK2019)

我试图调试链接错误 LNK2019: unresolved external symbol。为此,我尝试列出库中应该包含该符号的所有符号。但是,我有两个问题:

1)首先,我对如何以这种形式阅读去错符号感到困惑:

具体来说,我想知道X的含义是什么,它的重要性是什么?另外,交换SYMBOL_NAMEX会导致链接错误吗?

例如,这里是库中符号的(解构)定义:

这是链接错误:

您可以看到未解析的符号和现有符号的SYMBOL_NAMEX交换了。

2)有人对如何解决上面列出的错误有任何想法吗?

任何帮助将不胜感激!

0 投票
1 回答
432 浏览

swift - Linux 上的 libswiftDemangle.so

在 Mac 机器上编译 Swift 时,会libswiftDemangle.dylib创建一个动态库。我也需要在 Linux 机器上创建的动态库,但是,动态库不是在编译源代码后创建的。

该文件包含CMakeLists.txtlib/SwiftDemangle/CMakeLists.txt

指令,但是没有创建库。

我使用这个命令./swift/utils/build-script -R -c --build-subdir build --install-prefix /mnt/servers/swift/install -j4来构建项目,最终它运行cmakeninja构建项目。

有任何想法吗?

0 投票
1 回答
1567 浏览

gdb - 程序在调试模式下崩溃:“无法解散”?

在 Eclipse CDT 中,我的代码不在调试模式下运行。我收到以下消息:

/build/gdb-HnfxP_/gdb-7.10/gdb/cp-support.c:1595: demangler-warning: 无法对 '_ZdvI7Vector3dESt6vectorIDTdvcvT__EcvT0__EESaIS4_EERKS1_IS2_SaIS2_EERKS1_IS2_SaIS2_EERKS1_IS3_SaIS3_EE'进行 demangler 解耦(解码器因信号 11 失败)无法转储核心,请使用无限'在下次执行 GDB 之前。

使用https://d.fuqu.jp/c++filtjs/我发现损坏的符号对应于

为什么这会给我一个错误,我该如何解决?

0 投票
0 回答
127 浏览

c++ - dll 和使用此 dll 项目中的 C++ mangle 名称不匹配

我正在尝试在我的 Visual C++ (2015, OS - Windows8x64) MFC Win32 项目中使用一些 lib 和 dll。这个库是旧的,从 2005 年开始。在我的项目中,我在一些 dll 的函数调用中收到未解决的外部符号错误。所以我在引用的 dll 上做了一个小垃圾箱,结果发现 mangle 名称不匹配。例如这些功能。在 *.h 文件中:

1.

2.

1.项目中的mangle名称

dll中的mangle名称

项目中的 demangle 名称(undname 命令)是:

dll 中的 demangle 名称为:

2.项目中的mangle名称

dll中的mangle名称

项目中的 demangle 名称

和 DLL 中的 demangle 名称

如您所见,区别在于“CString”如何使这些名称匹配?

添加了#define USE_ADS_SHARED_LIB - 没有任何改变 在函数声明中添加__stdcall 也没有帮助。