summary refs log tree commit diff stats
path: root/tools
diff options
context:
space:
mode:
authorArne Döring <arne.doering@gmx.net>2019-01-21 14:22:16 +0100
committerArne Döring <arne.doering@gmx.net>2019-01-21 14:22:16 +0100
commitea0c1811c52355335b4a884a1c963bfe332aebc4 (patch)
tree90c22ace1970b6f281a04fa2ef608d24c720891b /tools
parentf11f36e7d5c2dc9a8f13f84ead360369fb05eaf3 (diff)
downloadNim-ea0c1811c52355335b4a884a1c963bfe332aebc4.tar.gz
gdb pretty printer survive reload
Diffstat (limited to 'tools')
-rw-r--r--tools/nim-gdb.py16
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)