问题标签 [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 回答
592 浏览

c++ - 解组成员函数名称中的返回类型

abi::__cxa_demangleg++函数不返回成员函数返回值的原因是什么?

这是此行为的一个工作示例

编译后 g++ foo.cpp -std=c++11 -rdynamic 的输出是 Foo::operator()() const

有没有办法获得一致的行为,也就是获得成员函数的返回值?

0 投票
0 回答
315 浏览

c++ - 是否可以从损坏的字符串中获取函数名称

这个问题是下一个问题的延续其中提供了对函数给出的函数名进行解构的代码backtrace

我想知道是否有办法获取可调用对象的名称和命名空间。在这里,我们假设该函数确实有一个名称,并且可以将其名称与abi::__cxa_demangle(例如,它不是 lambda 函数)进行分解。

此外,是否有可能获得该函数所在的命名空间列表?

0 投票
2 回答
2241 浏览

c++ - abi::__cxa_demangle -- 为什么缓冲区需要是`malloc`-ed?

abi::__cxa_demangle(例如https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/a01696.html )的文档指定第二个参数 ,char * output_buffer需要malloc-ed。

这意味着不允许在堆栈上分配如下字符缓冲区。

两个问题:

  1. 为什么output_buffer不允许在堆栈上?

  2. 为什么在已经传递了输出缓冲区时返回了不同的指针?

backtrace()示例的影响,我会想象一个类似以下的 API

0 投票
1 回答
616 浏览

c++ - 解构 C++ 符号的歧义

这两个 C++ 符号不同,但被分解(使用 C++filt 或类似实用程序)成相同的形式:

为什么这样?会不会是 demangler 的缺陷或其他什么?

0 投票
1 回答
215 浏览

unix - 使用 SED、ECHO 和 C++FILT 去除 txt 文件中的所有 c++ 符号

考虑一个具有以下内容的输入文件:

需要在输入 txt 文件中搜索损坏的符号并将其替换为它们的去错名称,并将其打印为输出,如下所示:

假设没有其他行将有逗号后跟下划线。因此,我可以使用 ",(_.*)" 来捕获 input.txt 文件中的损坏符号。

当我在 tcsh shell 中使用以下命令时,它不起作用。输出仍然与 input.txt 相同。我无法解释为什么。

命令有什么问题?

0 投票
1 回答
61 浏览

elf - 如何在 .so ELF 格式文件的动态符号名称中解释 @abc(01)?

我有两个非常相似的 .so 文件。在它们上使用 readelf --syms --wide 我收到...

... 为了第一:

...第二个:

(18) 和 (21) 分别是什么意思?

0 投票
0 回答
232 浏览

debugging - 尝试使用 vscode 远程调试 C++ 时无法解绑

我正在尝试使用 vscode 内部人员和 ssh 远程调试远程应用程序。如果我设置

launch.json它根本不起作用。如果我将它设置为 false 它可以工作,但断点是不可能的。如果我设置

它在程序的第一行运行并停止,但如果任何断点集gdb以错误结束

可以做什么?

0 投票
1 回答
1013 浏览

c - 用于 gcc 的 __cxa_demangle 的 C 等效项?

我过去曾使用以下函数来对 c++ 符号进行分解,事实证明它非常有用:

现在我在一个使用 gcc 的 C 应用程序上工作,但不能使用 __cxa_demangle 因为它是一个 C 程序(它仅适用于 g++ C++ 编译器),在 C++ 中我通常会调用如下:

有人知道如何在 C 中实现相同的目标吗?

0 投票
0 回答
81 浏览

linux - 防止性能名称破坏

Perf用来提取evince基准的调用图(写在 中C++)。默认情况下,Perf对调用图中的函数名称进行解码。但这不是首选。因为我提供需要重命名的函数GDB名称。是否有一个选项Perf可以防止名称拆解?

0 投票
0 回答
43 浏览

c++ - 在 c++ 程序内部使用 c++filt

Gcc 编译器在安装期间构建 c++filt。因此,所有来源都是“某处”,可从自己的 progs 中使用。

我想要达到的目标:

我读了一些精灵文件,也得到了符号,没问题。对于 c++ 生成的 elf 文件,我按预期看到了损坏的名称。现在我想让我的程序输出更方便一些,并将 c++filt 功能包含到我的程序中。解析我真正巨大的输出抛出外部 c++filt 程序是没有意义的。

有人知道在哪里可以从 gcc 源中捕获 demangler 的源文件,还是已经有一些我可以选择的共享对象或静态库?

在我的情况下,如果目标使 c++filt 特定,我需要它用于 avr-gcc。