From 18121bf4208de4032ee999cf156062a94fac7e6a Mon Sep 17 00:00:00 2001 From: hjk <qthjk@ovi.com> Date: Tue, 8 Jan 2013 17:49:44 +0100 Subject: [PATCH] Debugger: allow plain gdb's pretty printers to be used in Creator Change-Id: If31fe1bce75bef4f4a687c51ef57381f5083814c Reviewed-by: hjk <qthjk@ovi.com> --- share/qtcreator/dumper/dumper.py | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py index a3291bd3cc8..ae576bd683d 100644 --- a/share/qtcreator/dumper/dumper.py +++ b/share/qtcreator/dumper/dumper.py @@ -1948,6 +1948,41 @@ def threadnames(arg): registerCommand("threadnames", threadnames) +####################################################################### +# +# Import plain gdb pretty printers +# +####################################################################### + +class PlainDumper: + def __init__(self, printer): + self.printer = printer + + def __call__(self, d, value): + printer = self.printer.invoke(value) + lister = getattr(printer, "children", None) + children = [] if lister is None else list(lister()) + d.putType(self.printer.name) + d.putValue(printer.to_string()) + d.putNumChild(len(children)) + if d.isExpanded(): + with Children(d): + for child in children: + d.putSubItem(child[0], child[1]) + +def importPlainDumper(printer): + name = printer.name.replace("::", "__") + qqDumpers[name] = PlainDumper(printer) + qqFormats[name] = "" + +def importPlainDumpers(args): + for obj in gdb.objfiles(): + for printers in obj.pretty_printers + gdb.pretty_printers: + for printer in printers.subprinters: + importPlainDumper(printer) + +registerCommand("importPlainDumpers", importPlainDumpers) + ####################################################################### # -- GitLab