我在 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 中获取成员吗?
从 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.
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |