如何访问Python GDB Value的键或值

2024-01-10

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

(gdb) python mystruct = gdb.parse_and_eval("mystruct")

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

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

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


来自广发银行文档 http://sourceware.org/gdb/onlinedocs/gdb/Values-From-Inferior.html#Values-From-Inferior:

你可以得到类型mystruct像这样:

tp = mystruct.type

并迭代fields http://sourceware.org/gdb/onlinedocs/gdb/Types-In-Python.html#Types-In-Python via tp.fields()

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

Update:GDB 7.4 刚刚发布。来自公告 http://sourceware.org/ml/gdb-announce/2012/msg00001.html:

结构和联合类型的类型对象现在允许访问 使用标准 Python 字典(映射)方法的字段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何访问Python GDB Value的键或值 的相关文章

随机推荐