如何将类型的gdb.value转换为int

时间:2015-02-11 10:01:45

标签: python gdb

我想在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中的第一个问题,遗憾的是混乱和我的英语不足。

2 个答案:

答案 0 :(得分:5)

你想要的是:

int(value.cast(gdb.lookup_type('long')))

答案 1 :(得分:1)

我遇到了int(value)给我签名号码的问题,即使该类型是明确无符号的。我用它来解决这个问题:

int(value) & 0xffffffffffffffff