如何访问 Python GDB Value 的键或值

Uhl*_*hlo 5 python linux gdb

我在 GDB 中有一个结构,想运行一个检查这个结构的脚本。在 Python GDB 中,您可以通过以下方式轻松访问结构

(gdb) python mystruct = gdb.parse_and_eval("mystruct")
Run Code Online (Sandbox Code Playgroud)

现在我得到了一个名为 mystruct 的变量,它是一个 GDB.Value 对象。我可以通过简单地将此对象用作字典来访问结构的所有成员(例如mystruct['member'])。

问题是,我的脚本不知道某个结构具有哪些成员。所以我想从这个 GDB.Value 对象中获取键(甚至是值)。但也不mystruct.values()mystruct.keys()这里工作工作。

有没有可能访问这些信息?我认为您无法访问此信息的可能性很小,但我没有在任何地方找到它。Adir(mystruct)告诉我也没有键或值功能。我可以通过打印 mystruct 来查看所有成员,但是没有办法在 python 中获取成员吗?

Emp*_*ian 5

从 GDB文档

你可以得到这样的类型mystruct

tp = mystruct.type
Run Code Online (Sandbox Code Playgroud)

和遍历领域通过tp.fields()

不需要邪恶的解决方法;-)

更新: GDB 7.4 刚刚发布。从公告

Type objects for struct and union types now allow access to the fields using standard Python dictionary (mapping) methods.