diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 7f0cda66237..68cafc52094 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -2851,6 +2851,7 @@ class DumperBase(): self.type = None self.ldata = None # Target address in case of references and pointers. self.laddress = None # Own address. + self.lvalue = None self.lIsInScope = True self.ldisplay = None self.summary = None # Always hexencoded UTF-8. @@ -2924,7 +2925,7 @@ class DumperBase(): def integer(self, bitsize=None): if self.type.code == TypeCode.Typedef: return self.detypedef().integer() - elif self.type.code == TypeCode.Bitfield: + elif isinstance(self.lvalue, int): return self.lvalue # Could be something like 'short unsigned int' unsigned = self.type.name == 'unsigned' \ diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 824f4c50f75..5d32f8426c9 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -307,6 +307,13 @@ class Dumper(DumperBase): val.ldisplay += ' (%s)' % intval elif code == gdb.TYPE_CODE_COMPLEX: val.ldisplay = str(nativeValue) + elif code in [gdb.TYPE_CODE_BOOL, gdb.TYPE_CODE_INT]: + try: + # extract int presentation from native value and remember it + val.lvalue = int(nativeValue) + except: + # GDB only support converting integers of max. 64 bits to Python int as of now + pass #elif code == gdb.TYPE_CODE_ARRAY: # val.type.ltarget = nativeValue[0].type.unqualified() return val