问题标签 [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++ - 解组成员函数名称中的返回类型
abi::__cxa_demangle
g++函数不返回成员函数返回值的原因是什么?
这是此行为的一个工作示例
编译后
g++ foo.cpp -std=c++11 -rdynamic
的输出是
Foo::operator()() const
有没有办法获得一致的行为,也就是获得成员函数的返回值?
c++ - 是否可以从损坏的字符串中获取函数名称
这个问题是下一个问题的延续,其中提供了对函数给出的函数名进行解构的代码backtrace
。
我想知道是否有办法获取可调用对象的名称和命名空间。在这里,我们假设该函数确实有一个名称,并且可以将其名称与abi::__cxa_demangle
(例如,它不是 lambda 函数)进行分解。
此外,是否有可能获得该函数所在的命名空间列表?
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。
这意味着不允许在堆栈上分配如下字符缓冲区。
两个问题:
为什么
output_buffer
不允许在堆栈上?为什么在已经传递了输出缓冲区时返回了不同的指针?
受backtrace()示例的影响,我会想象一个类似以下的 API
c++ - 解构 C++ 符号的歧义
这两个 C++ 符号不同,但被分解(使用 C++filt 或类似实用程序)成相同的形式:
为什么这样?会不会是 demangler 的缺陷或其他什么?
unix - 使用 SED、ECHO 和 C++FILT 去除 txt 文件中的所有 c++ 符号
考虑一个具有以下内容的输入文件:
需要在输入 txt 文件中搜索损坏的符号并将其替换为它们的去错名称,并将其打印为输出,如下所示:
假设没有其他行将有逗号后跟下划线。因此,我可以使用 ",(_.*)" 来捕获 input.txt 文件中的损坏符号。
当我在 tcsh shell 中使用以下命令时,它不起作用。输出仍然与 input.txt 相同。我无法解释为什么。
命令有什么问题?
elf - 如何在 .so ELF 格式文件的动态符号名称中解释 @abc(01)?
我有两个非常相似的 .so 文件。在它们上使用 readelf --syms --wide 我收到...
... 为了第一:
...第二个:
(18) 和 (21) 分别是什么意思?
debugging - 尝试使用 vscode 远程调试 C++ 时无法解绑
我正在尝试使用 vscode 内部人员和 ssh 远程调试远程应用程序。如果我设置
在launch.json
它根本不起作用。如果我将它设置为 false 它可以工作,但断点是不可能的。如果我设置
它在程序的第一行运行并停止,但如果任何断点集gdb
以错误结束
可以做什么?
c - 用于 gcc 的 __cxa_demangle 的 C 等效项?
我过去曾使用以下函数来对 c++ 符号进行分解,事实证明它非常有用:
现在我在一个使用 gcc 的 C 应用程序上工作,但不能使用 __cxa_demangle 因为它是一个 C 程序(它仅适用于 g++ C++ 编译器),在 C++ 中我通常会调用如下:
有人知道如何在 C 中实现相同的目标吗?
linux - 防止性能名称破坏
我Perf
用来提取evince
基准的调用图(写在 中C++
)。默认情况下,Perf
对调用图中的函数名称进行解码。但这不是首选。因为我提供需要重命名的函数GDB
名称。是否有一个选项Perf
可以防止名称拆解?
c++ - 在 c++ 程序内部使用 c++filt
Gcc 编译器在安装期间构建 c++filt。因此,所有来源都是“某处”,可从自己的 progs 中使用。
我想要达到的目标:
我读了一些精灵文件,也得到了符号,没问题。对于 c++ 生成的 elf 文件,我按预期看到了损坏的名称。现在我想让我的程序输出更方便一些,并将 c++filt 功能包含到我的程序中。解析我真正巨大的输出抛出外部 c++filt 程序是没有意义的。
有人知道在哪里可以从 gcc 源中捕获 demangler 的源文件,还是已经有一些我可以选择的共享对象或静态库?
在我的情况下,如果目标使 c++filt 特定,我需要它用于 avr-gcc。