From 68ed29b3b40db09043419b8b4d4f3cdd57184808 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Fri, 8 Jan 2010 11:03:00 +0100 Subject: [PATCH] debugger: make watchers work with gdb 7.0 and 7.0.1 gdb 7.0 will still be considered unsupported due to the division-by-zero crash --- share/qtcreator/gdbmacros/dumper.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py index b7ba0740e6b..7ffc59ff90c 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) -- GitLab