在 gdb 的Values From Inferior 文档中,有第二个构造函数用于在 python 中创建对象。它指出:
功能:
Value.__init__ (val, type)
构造函数的第二种形式
gdb.Value
返回一个gdb.Value
类型type
,其中值内容取自 指定的 Python 缓冲区对象val
。Python 缓冲区对象中的字节数必须大于或等于类型的大小。
我的问题是,如何创建可以传递给构造函数的缓冲区对象?例如,如果我想创建一个字符串(是的,我知道第一个 Value 构造函数可以做到这一点,但这是一个示例),我编写了以下函数:
def make_str(self, str):
str += '\0'
s = bytearray(str.encode())
return gdb.Value(s, gdb.lookup_type('char').array(len(str)))
但是,当我尝试使用它时,我收到了消息:
Python Exception <class 'ValueError'> Size of type is larger than that of buffer object.:
我将如何制作一个可以传递给 Value 构造函数的缓冲区对象?我需要做什么来生成一个 Value 对象?