diff options
author | hjk <hjk121@nokiamail.com> | 2014-02-28 12:05:48 +0100 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-02-28 12:16:14 +0100 |
commit | 762f3e32fdb0caca63d08f49a49065e781b90d09 (patch) | |
tree | 31dce2f13835c7c480eb9ddc6e555eb1ee242a66 /share | |
parent | 41f2556543ac45dd7f1b44602422fe40d50372e5 (diff) |
Debugger: Fix metaobject lookuop for older versions of GDB
Symbol.value is not available in 7.4
Change-Id: I86e00cbeef61669ca5950e35a7b0aed86dcb2f87
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Diffstat (limited to 'share')
-rw-r--r-- | share/qtcreator/debugger/gdbbridge.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index 2bfa0f1f8f..8a3011de4f 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -833,6 +833,17 @@ class Dumper(DumperBase): def extractByte(self, addr): return struct.unpack("b", self.readRawMemory(addr, 1))[0] + def findSymbol(self, symbolName): + try: + result = gdb.lookup_global_symbol(symbolName) + return result.value() if result else 0 + except: + pass + # Older GDB ~7.4 + try: + return gdb.parse_and_eval(symbolName) + except: + return 0 def extractStaticMetaObjectHelper(self, typeName): """ @@ -844,15 +855,7 @@ class Dumper(DumperBase): return 0 staticMetaObjectName = typeName + "::staticMetaObject" - if hasattr(gdb, 'lookup_global_symbol'): - result = gdb.lookup_global_symbol(staticMetaObjectName) - result = result.value() if result else 0 - else: - # Older GDB... - try: - result = gdb.parse_and_eval(staticMetaObjectName) - except: - result = 0 + result = self.findSymbol(staticMetaObjectName) # We need to distinguish Q_OBJECT from Q_GADGET: # a Q_OBJECT SMO has a non-null superdata (unless it's QObject itself), |