aay*_*pov 5 python gdb pretty-print
在Python中,我有一个类型为gdb.Value的变量"var",它对应于C++结构.该struct有一个方法"void foo()".我可以评估这个表达式"var ['foo']".但是"var ['foo']()"会抱怨说RuntimeError:Value不可调用(不是TYPE_CODE_FUNC).我相信值类型将是gdb.TYPE_CODE_METHOD(不确定,但var ['foo'].type.code在我的情况下返回16).所以我想问题是python API是否支持对类方法的调用,如果没有,是否有解决方法?谢谢!
好吧,我想我能够用汤姆的建议和另一种解决方法做我想做的事.我需要一个额外的解决方法是(如我上面的评论中提及)的问题,我没有为了撰写格式的字符串有变量名:"myval.method()"传递给gdb.parse_and_eval.因此,该方法的解决方法是获取变量的地址,然后将其转换为类型,然后向该字符串添加方法调用.python api中的类型和地址都存在于gdb.Value中.所以解决方案如下所示:
eval_string = "(*("+str(self.val.type)+"*)("+str(self.val.address)+")).method()"
return gdb.parse_and_eval(eval_string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |