Pretty print MonoVTable in xdebug.
authorZoltan Varga <vargaz@gmail.com>
Mon, 14 Mar 2011 22:09:06 +0000 (23:09 +0100)
committerZoltan Varga <vargaz@gmail.com>
Wed, 16 Mar 2011 13:43:25 +0000 (14:43 +0100)
data/gdb/mono-gdb.py

index b53f197cad523423f23bd2ff84ac99534a00742d..793d83464c77521975d76854d63711758077d608 100644 (file)
@@ -280,6 +280,19 @@ class MonoMethodRgctxPrinter:
             inst_str = inst_str + type_printer.to_string ()
         return "MRGCTX[%s, [%s]]" % (klass_printer.to_string(), inst_str)
 
+class MonoVTablePrinter:
+    "Print a MonoVTable structure"
+
+    def __init__(self, val):
+        self.val = val
+
+    def to_string(self):
+        vtable = self.val.dereference ()
+        klass = vtable ["klass"]
+        klass_printer = MonoClassPrinter (klass)
+
+        return "vtable(%s)" % (klass_printer.to_string ())
+
 def lookup_pretty_printer(val):
     t = str (val.type)
     if t == "object":
@@ -302,6 +315,8 @@ def lookup_pretty_printer(val):
         return MonoGenericClassPrinter (val)
     if t == "MonoMethodRuntimeGenericContext *":
         return MonoMethodRgctxPrinter (val)
+    if t == "MonoVTable *":
+        return MonoVTablePrinter (val)
     return None
 
 def register_csharp_printers(obj):