我在调试 C 程序时使用 python2.6 的 gdb 模块,并希望根据实例的“.Type”将 gdb.Value 实例转换为 python 数字对象(变量)。
例如,通过 将我的 C 程序SomeStruct->some_float_val = 1./6;
转换为 Python gdb.Value 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,但我看不到如何将 Value 实例转换为 python变量干净,说 Value 甚至不在 C 内存中,而是表示 gdb.Value.address (所以不能使用Inferior.read_memory()
),如何在不转换字符串值的情况下将其转换为 Python int ?