diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index b7ba0740e6bce928df426ecd5863fa1de276c9d7..7ffc59ff90c230c5576b6e08d1271523714d3579 100644 --- a/share/qtcreator/gdbmacros/dumper.py +++ b/share/qtcreator/gdbmacros/dumper.py @@ -42,7 +42,11 @@ def parseAndEvaluate(exp): # Work around non-existing gdb.parse_and_eval as in released 7.0 gdb.execute("set logging redirect on") gdb.execute("set logging on") - gdb.execute("print %s" % exp) + try: + gdb.execute("print %s" % exp) + except: + gdb.execute("set logging off") + return None gdb.execute("set logging off") return gdb.history(0) @@ -437,16 +441,6 @@ class FrameCommand(gdb.Command): def handleWatch(self, d, exp, name): #warn("HANDLING WATCH %s, NAME: %s" % (exp, name)) - if not isGoodGdb(): - d.beginHash() - d.put('iname="watch.%s",' % name) - d.put('name="%s",' % exp) - d.put('exp="%s",' % exp) - d.put('value="<unsupported gdb version>"',) - d.put('type="<unknown>",numchild="0"') - d.endHash() - return - if exp.startswith("["): #warn("EVAL: EXP: %s" % exp) d.beginHash() @@ -743,6 +737,14 @@ class Dumper: if not name is None: self.putName(name) + if item.value is None: + # Happens for non-available watchers in gdb versions that + # need to use gdb.execute instead of gdb.parse_and_eval + self.putValue("<not available>") + self.putType("<unknown>") + self.putNumChild(0) + return + # FIXME: Gui shows references stripped? #warn(" "); #warn("REAL INAME: %s " % item.iname)