From 534452158546dc2727784e82d695b05efc64fc04 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 28 Apr 2010 11:18:54 +0200 Subject: [PATCH] debugger: some python polishing --- share/qtcreator/gdbmacros/pdumper.py | 70 ++++++++++++++++++------- src/plugins/debugger/pdb/pdbengine.cpp | 2 +- tests/manual/gdbdebugger/python/math.py | 5 ++ 3 files changed, 57 insertions(+), 20 deletions(-) diff --git a/share/qtcreator/gdbmacros/pdumper.py b/share/qtcreator/gdbmacros/pdumper.py index 9086951e2b9..7d9a465e1d1 100644 --- a/share/qtcreator/gdbmacros/pdumper.py +++ b/share/qtcreator/gdbmacros/pdumper.py @@ -6,11 +6,11 @@ import linecache class qdebug: def __init__(self, - options = Null, - expanded = Null, - typeformats = Null, - individualformats = Null, - watchers = Null): + options = None, + expanded = None, + typeformats = None, + individualformats = None, + watchers = None): self.options = options self.expanded = expanded self.typeformats = typeformats @@ -88,25 +88,57 @@ class qdebug: tt = self.cleanType(t) if tt == "module" or tt == "function": return - if tt == "list": - self.warn("LIST: %s" % dir(value)) - self.put("{") - self.putField("iname", iname) - self.putName(name) - self.putType(tt) - self.putValue(value) + self.put("{") + self.putField("iname", iname) + self.putName(name) + self.putType(tt) + if tt == "list" or tt == "tuple": + self.putItemCount(len(value)) + #self.putValue(value) self.put("children=[") for i in xrange(len(value)): self.dumpValue(value[i], str(i), "%s.%d" % (iname, i)) self.put("]") - self.put("},") - elif tt != "module" and tt != "function": - self.put("{") - self.putField("iname", iname) - self.putName(name) - self.putType(tt) + elif tt == "str": + v = value + self.putValue(v.encode('hex')) + self.putField("valueencoded", 6) + self.putNumChild(0) + elif tt == "unicode": + v = value + self.putValue(v.encode('hex')) + self.putField("valueencoded", 6) + self.putNumChild(0) + elif tt == "buffer": + v = str(value) + self.putValue(v.encode('hex')) + self.putField("valueencoded", 6) + self.putNumChild(0) + elif tt == "xrange": + b = iter(value).next() + e = b + len(value) + self.putValue("(%d, %d)" % (b, e)) + self.putNumChild(0) + elif tt == "dict": + self.putItemCount(len(value)) + self.putField("childnumchild", 2) + self.put("children=[") + i = 0 + for (k, v) in value.iteritems(): + self.put("{") + self.putType(" ") + self.putValue("%s: %s" % (k, v)) + self.put("children=[") + self.dumpValue(k, "key", "%s.%d.k" % (iname, i)) + self.dumpValue(v, "value", "%s.%d.v" % (iname, i)) + self.put("]},") + i += 1 + self.put("]") + elif tt == "module" or tt == "function": + pass + else: self.putValue(value) - self.put("},") + self.put("},") def warn(self, msg): diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index c33cfd450a8..0fa670239e4 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -179,7 +179,7 @@ void PdbEngine::startDebugger(const DebuggerStartParametersPtr &sp) m_commands.enqueue(cmd); m_pdbProc.start(m_pdb, gdbArgs); - qDebug() << "STARTING:" << m_pdb << gdbArgs; + //qDebug() << "STARTING:" << m_pdb << gdbArgs; if (!m_pdbProc.waitForStarted()) { const QString msg = tr("Unable to start pdb '%1': %2") diff --git a/tests/manual/gdbdebugger/python/math.py b/tests/manual/gdbdebugger/python/math.py index 63f3b2a7d52..5a59ecba582 100644 --- a/tests/manual/gdbdebugger/python/math.py +++ b/tests/manual/gdbdebugger/python/math.py @@ -5,6 +5,11 @@ def square(a): def cube(a): l = [1, 2, 4] + t = (1, 2, 3) + d = {1: 'one', 2: 'two', 'three': 3} + s = u'unixcode' + x = xrange(1, 10) + b = buffer("xxx") x = square(a) x = x * a x = x + 1 -- GitLab