2009-04-14 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Tue, 14 Apr 2009 20:07:00 +0000 (20:07 -0000)
committerZoltan Varga <vargaz@gmail.com>
Tue, 14 Apr 2009 20:07:00 +0000 (20:07 -0000)
* mono-gdb.py (MonoClassPrinter.to_string): Add a MonoClass* pretty
printer.

svn path=/trunk/mono/; revision=131695

data/gdb/ChangeLog
data/gdb/mono-gdb.py

index f88aeabf9c5a78e96d4c63188dfcb04b252a0275..58050296d29a38737c78330a535c4493288fa14d 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * mono-gdb.py (MonoClassPrinter.to_string): Add a MonoClass* pretty
+       printer.
+
 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
 
        * mono-gdb.py (MonoMethodPrinter.to_string): Add a MonoMethod* pretty
index 8325b8a4f9fc57fd7426693d421c8c980a7d64b3..bb40cba984990ad190b1de104c0b6c18003c97da 100644 (file)
@@ -157,6 +157,21 @@ class MonoMethodPrinter:
         # This returns more info but requires calling into the inferior
         #return "\"%s\"" % (gdb.parse_and_eval ("mono_method_full_name (%s, 1)" % (str (int (self.val.cast (gdb.lookup_type ("guint64")))))).string ())
 
+class MonoClassPrinter:
+    "Print a MonoClass structure"
+
+    def __init__(self, val):
+        self.val = val
+
+    def to_string(self):
+        if int(self.val.cast (gdb.lookup_type ("guint64"))) == 0:
+            return "0x0"
+        klass = self.val.dereference ()
+        class_name = stringify_class_name (klass ["name_space"].string (), klass ["name"].string ())
+        return "\"%s\"" % (class_name)
+        # This returns more info but requires calling into the inferior
+        #return "\"%s\"" % (gdb.parse_and_eval ("mono_type_full_name (&((MonoClass*)%s)->byval_arg)" % (str (int ((self.val).cast (gdb.lookup_type ("guint64")))))))
+
 def lookup_pretty_printer(val):
     t = str (val.type)
     if t == "object":
@@ -167,6 +182,8 @@ def lookup_pretty_printer(val):
         return StringPrinter (val)
     if t == "MonoMethod *":
         return MonoMethodPrinter (val)
+    if t == "MonoClass *":
+        return MonoClassPrinter (val)
     return None
 
 def register_csharp_printers(obj):