gdb 漂亮打印:如何使用 gdb python 模块对类型进行分解?

问题描述 投票:0回答:1

问题说的差不多。

上下文:在cuda-gdb中,如果你有一个模板化结构体并且想知道它是什么类型,你会得到这样的东西:

@something mangled_name
。我想编写一个漂亮的打印机,并且需要以分解形式匹配类型的名称。问题是我不知道如何使用 gdb 模块来做到这一点。我知道如何提取损坏的名称。

细节:我也尝试过使用其他库,但是当我获取漂亮的打印机时,它说

Module not found
。我只能在虚拟环境中安装第三方模块。

gdb gdb-python
1个回答
0
投票

发现这是一个解决方案/黑客。我希望 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")
© www.soinside.com 2019 - 2024. All rights reserved.