我在调试一个C程序时使用python2.6的gdb模块,并且想转换一个gdb.价值实例转换为基于实例的'.Type'的python数字对象(变量)。在
例如,将C程序的SomeStruct->some_float_val = 1./6;
转换为Pythongdb.价值通过sfv=gdb.parse_and_eval('SomeStruct->some_double_val')
,然后将其转换为一个双精度浮点python变量——知道str(sfv.type.strip_typedefs())=='double'
,其大小为8B——而不只是通过使用dbl=float(str(sfv))
或Value.string()
来转换字符串,而是类似于使用struct
解压字节以获得正确的双精度价值观。在
从我的搜索返回的每个链接都指向https://sourceware.org/gdb/onlinedocs/gdb/Values-From-Inferior.html#Values-From-Inferior,但是我无法清楚地看到如何将值实例转换为python变量,比如该值甚至不在C内存中,而是表示一个gdb.Value.地址(所以不能使用Inferior.read_memory()
),如何在不转换字符串值的情况下将其转换为Python int?在
您可以使用
int
或float
直接从Value
转换它:不过,系统中似乎至少有一个故障,因为
float(gdb.Value(0))
不起作用。在相关问题 更多 >
编程相关推荐