gpt4 book ai didi

python - gdb python api : is it possible to make a call to a class/struct method

转载 作者:太空狗 更新时间:2023-10-30 00:50:16 24 4
gpt4 key购买 nike

在 Python 中,我有一个类型为 gdb.Value 的变量 var,它对应于一个 C++ 结构。

该结构有一个方法 void foo()

我可以计算这个表达式 var['foo']。但是 var['foo']\() 会提示说

RuntimeError: Value is not callable (not TYPE_CODE_FUNC)

我相信值类型将是 gdb.TYPE_CODE_METHOD(不确定,但 var['foo'].type.code 返回 16) 就我而言。

所以我想问题是:

python API 是否支持调用类方法,如果不支持,是否有解决方法?

谢谢!

最佳答案

好的,我想我可以根据 Tom 的建议和其他解决方法来做我想做的事。

我需要一个额外的解决方法的问题是(正如我在上面的评论中提到的)我没有变量名来组成一个形式的字符串:myval.method()传递给 gdb.parse_and_eval

因此,解决方法是获取变量的地址,然后将其转换为类型,然后添加对字符串的方法调用。

类型和地址都存在于 gdb.Value 的 python api 中。所以解决方案如下所示:

    eval_string = "(*("+str(self.val.type)+"*)("+str(self.val.address)+")).method()"
return gdb.parse_and_eval(eval_string);

关于python - gdb python api : is it possible to make a call to a class/struct method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774067/

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