res.append ('"')
return ''.join (res)
+def stringify_class_name(ns, name):
+ if ns == "System":
+ if name == "Byte":
+ return "byte"
+ if name == "String":
+ return "string"
+ return "%s.%s" % (ns, name)
+
class ArrayPrinter:
"Print a C# array"
def to_string(self):
obj = self.val.cast (gdb.Type ("MonoArray").pointer ()).dereference ()
length = obj ['max_length']
- return "%s.%s [%d]" % (self.class_ns, self.class_name [0:len(self.class_name) - 2], int(length))
+ return "%s [%d]" % (stringify_class_name (self.class_ns, self.class_name [0:len(self.class_name) - 2]), int(length))
class ObjectPrinter:
"Print a C# object"
gdb.execute ("add-symbol-file %s 0" % sofile)
self.s_size = new_size
+class RunHook (gdb.Command):
+ def __init__ (self):
+ super (RunHook, self).__init__ ("hook-run", gdb.COMMAND_NONE,
+ gdb.COMPLETE_COMMAND, pre_hook_of="run")
+
+ def invoke(self, arg, from_tty):
+ mono_support.run_hook ()
+
print "Mono support loaded."
mono_support = MonoSupport ()
+# This depends on the changes in gdb-python.diff to work
+#RunHook ()
+
# Register our hooks
# This currently cannot be done from python code
exec_file = os.readlink (exec_file)
exec_dir = os.path.dirname (exec_file)
gdb.execute ("source %s/%s-gdbinit" % (exec_dir, os.path.basename (exec_file)))
-