作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 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/
我是一名优秀的程序员,十分优秀!