问题说的差不多。
上下文:在cuda-gdb中,如果你有一个模板化结构体并且想知道它是什么类型,你会得到这样的东西:
@something mangled_name
。我想编写一个漂亮的打印机,并且需要以分解形式匹配类型的名称。问题是我不知道如何使用 gdb 模块来做到这一点。我知道如何提取损坏的名称。
细节:我也尝试过使用其他库,但是当我获取漂亮的打印机时,它说
Module not found
。我只能在虚拟环境中安装第三方模块。
发现这是一个解决方案/黑客。我希望 gdb 模块有一个分解器。我会等待更好的答案。
import subprocess
def demangle(name):
args = ['c++filt', name]
pipe = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, _ = pipe.communicate()
return stdout[:-1].decode("utf-8")