diff options
author | Arne Döring <arne.doering@gmx.net> | 2019-01-21 14:22:16 +0100 |
---|---|---|
committer | Arne Döring <arne.doering@gmx.net> | 2019-01-21 14:22:16 +0100 |
commit | ea0c1811c52355335b4a884a1c963bfe332aebc4 (patch) | |
tree | 90c22ace1970b6f281a04fa2ef608d24c720891b /tools | |
parent | f11f36e7d5c2dc9a8f13f84ead360369fb05eaf3 (diff) | |
download | Nim-ea0c1811c52355335b4a884a1c963bfe332aebc4.tar.gz |
gdb pretty printer survive reload
Diffstat (limited to 'tools')
-rw-r--r-- | tools/nim-gdb.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/tools/nim-gdb.py b/tools/nim-gdb.py index 1a0d89fcb..fb7eff565 100644 --- a/tools/nim-gdb.py +++ b/tools/nim-gdb.py @@ -1,4 +1,3 @@ - import gdb import re import sys @@ -16,8 +15,6 @@ def printErrorOnce(id, message): errorSet.add(id) gdb.write(message, gdb.STDERR) -nimobjfile = gdb.current_objfile() or gdb.objfiles()[0] -nimobjfile.type_printers = [] ################################################################################ ##### Type pretty printers @@ -121,9 +118,6 @@ class NimTypePrinter: def instantiate(self): return NimTypeRecognizer() - -nimobjfile.type_printers = [NimTypePrinter()] - ################################################################################ ##### GDB Function, equivalent of Nim's $ operator ################################################################################ @@ -528,5 +522,11 @@ def makematcher(klass): printErrorOnce(typeName, "No matcher for type '" + typeName + "': " + str(e) + "\n") return matcher -nimobjfile.pretty_printers = [] -nimobjfile.pretty_printers.extend([makematcher(var) for var in list(vars().values()) if hasattr(var, 'pattern')]) +def new_object_handler(event): + nimobjfile = gdb.current_objfile() or gdb.objfiles()[0] + nimobjfile.type_printers = [] + nimobjfile.type_printers = [NimTypePrinter()] + nimobjfile.pretty_printers = [] + nimobjfile.pretty_printers.extend([makematcher(var) for var in list(globals().values()) if hasattr(var, 'pattern')]) + +gdb.events.new_objfile.connect(new_object_handler) |