Prechádzať zdrojové kódy

2009-04-14 Zoltan Varga <[email protected]>

	* mono-gdb.py (MonoClassPrinter.to_string): Add a MonoClass* pretty
	printer.

svn path=/trunk/mono/; revision=131695
Zoltan Varga 16 rokov pred
rodič
commit
dcd5d970fa
2 zmenil súbory, kde vykonal 22 pridanie a 0 odobranie
  1. 5 0
      data/gdb/ChangeLog
  2. 17 0
      data/gdb/mono-gdb.py

+ 5 - 0
data/gdb/ChangeLog

@@ -1,3 +1,8 @@
+2009-04-14  Zoltan Varga  <[email protected]>
+
+	* mono-gdb.py (MonoClassPrinter.to_string): Add a MonoClass* pretty
+	printer.
+
 2009-04-12  Zoltan Varga  <[email protected]>
 
 	* mono-gdb.py (MonoMethodPrinter.to_string): Add a MonoMethod* pretty

+ 17 - 0
data/gdb/mono-gdb.py

@@ -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):