2015-02-11 2 views
3

Я хочу, чтобы вставить в код python значение gdb.value, которое представляет собой сложную переменную типа int (это не общий тип, а определенный в нашем коде - вид битового поля). Когда я promped в самой GdB оболочки:Как отличить тип gdb.value к int

«р вар»

печатает как INT, т.е. GDB знать, как бросить, что битовое к междунар.

(Странная вещь, кроме того, я получил, когда я попробовать эту команду:

Int (var.cast (i.type))

Когда "я" является gdb.value что его тип - int. var действительно становится int, но его значение становится таким же, как и значение i).

Так кто-то знает, как отличить этот gdb.value, используя знание gdb. (Или другим способом ..)

Спасибо. Это мой первый вопрос в StackOverFlow, извините за путаницу и слабый английский.

+0

Я думаю, что это нужно больше деталей, как фактический типа. Если это бит-поле, я бы предположил, что достаточно использовать оператор Python int(). –

+0

Спасибо, @TomTromey, но int() оператора недостаточно. – Yehezkel

+0

Итак, получилось, что решение состоит в том, чтобы передать var в строку, а затем в int: int (str (var)) – Yehezkel

ответ

3

Что вы хотите:

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

У меня была проблема с int(value) давая мне подписанную номер, даже если тип был явно без знака. Я использовал это, чтобы решить эту проблему:

int(value) & 0xffffffffffffffff

Смежные вопросы