问题标签 [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.
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 中的新事务内存功能有关。
profiling - 使用 perf 分析 D 程序时去除 D 符号
我刚刚在 Linux 上发现了出色的工具 perf。
我用这个描述了一个 D 程序,但是当我打电话时
符号没有被破坏。
我知道,ddemangle
但这仅适用于批处理模式。我总是可以将输出转储到文件中以供查看。但是,如果有人在将符号添加到 perf 数据库文件之前找到了对符号进行解码的解决方案,那就太好了。
g++ - 如何使用 cmake 设置 g++ 的标志,以便 gprof 可以解散?
如何在 CMakeLists.txt 中为 GNU g++ 的编译器和链接器设置 gprof 标志?
我目前的做法,
不允许 gprof 对 C++ 函数进行分解。有任何想法吗?(我使用的是 C++11)
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笔
c++ - 视觉工作室 typeid().name 上的 boost::core::demangle
我正在尝试获取一个字符串,该字符串在 Windows(Visual Studio 2010)上报告一个没有装饰的类类型,但根本没有成功。
由于 UnDecorateName 不起作用,我正在使用 boost 库。
如何从上面的代码中仅获取“MyObject”作为输出字符串?现在我不能使用 c++11 方法。
c++ - 一种在 C++ 中用最少代码确定派生类类型的方法
我有一个具有许多子类和 4 级继承的类(说 A)。我在基类中编写了函数类型来确定类的类型,如下所示:
这是使用此代码:
但不是这段代码:
我有一个vector<A>
可以采用任何子类的。有没有办法强制 A 返回派生类的类型?
c++ - Boost 文件系统库中未解析的外部符号(错误 LNK2019)
我试图调试链接错误 LNK2019: unresolved external symbol。为此,我尝试列出库中应该包含该符号的所有符号。但是,我有两个问题:
1)首先,我对如何以这种形式阅读去错符号感到困惑:
具体来说,我想知道X的含义是什么,它的重要性是什么?另外,交换SYMBOL_NAME和X会导致链接错误吗?
例如,这里是库中符号的(解构)定义:
这是链接错误:
您可以看到未解析的符号和现有符号的SYMBOL_NAME和X交换了。
2)有人对如何解决上面列出的错误有任何想法吗?
任何帮助将不胜感激!
swift - Linux 上的 libswiftDemangle.so
在 Mac 机器上编译 Swift 时,会libswiftDemangle.dylib
创建一个动态库。我也需要在 Linux 机器上创建的动态库,但是,动态库不是在编译源代码后创建的。
该文件包含CMakeLists.txt
:lib/SwiftDemangle/CMakeLists.txt
指令,但是没有创建库。
我使用这个命令./swift/utils/build-script -R -c --build-subdir build --install-prefix /mnt/servers/swift/install -j4
来构建项目,最终它运行cmake
并ninja
构建项目。
有任何想法吗?
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/我发现损坏的符号对应于
为什么这会给我一个错误,我该如何解决?
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 也没有帮助。