gpt4 book ai didi

python - 如何使用 gdb.lookup_type 查找本地类型定义

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:33 24 4
gpt4 key购买 nike

我有一个C静态函数,里面定义了一个struct类型。它可能看起来像:

static void do_stuff(parameters...) {
struct example {
uint32_t a;
uint32_t b;
};
}

我尝试使用 python gdb 模块来查找此类型 - gdb.lookup_type('struct example'),但我收到一条错误消息,指出该类型未定义。如果我将这个结构定义移到这个静态函数之外,那么一切都会好起来的。我想我需要在 lookup_type 函数中指定 block 参数。我尝试了 gdb.selected_frame().block()(及其 super block 、static_block、global_block),但它对我不起作用。我是 python 和 gdb 模块的新手,所以我不确定为什么在这里找不到本地结构类型,即使我将本地 block 传递给 lookup_type。谁能帮我解决这个问题?谢谢!

最佳答案

我自己想出了一个解决方案,虽然我不确定它是否是最好的。

我尝试检查当前帧 block 中的所有符号,发现可以在其中找到局部结构定义。代码可能如下所示:

for symbol in gdb.selected_frame().block():
if symbol.type.tag == 'example' and symbol.type.code = gdb.TYPE_CODE_STRUCT:
# do something

希望这对和我有同样问题的人有用。

关于python - 如何使用 gdb.lookup_type 查找本地类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42986811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com