我想在python代码中使用gdb.value,这是一个复杂的int类型变量(这不是通用类型,而是在我们的代码中定义 - 一种位域)。 当我在gdb shell中提示时:
“p var”
它将其打印为int,即gdb知道如何将该位域转换为int。
(奇怪的是,另外,当我尝试这个命令时我得到了:
INT(var.cast(i.type))
当“i”为gdb.value时,其类型为int。 var确实变为int,但其值与i)的值相同。
有人知道如何通过使用gdb的知识来强制转换这个gdb.value。 (或通过其他方式..)
感谢。这是我在StackOverFlow中的第一个问题,遗憾的是混乱和我的英语不足。
答案 0 :(得分:5)
你想要的是:
int(value.cast(gdb.lookup_type('long')))
答案 1 :(得分:1)
我遇到了int(value)
给我签名号码的问题,即使该类型是明确无符号的。我用它来解决这个问题:
int(value) & 0xffffffffffffffff