diff options
author | Zoltan Varga <vargaz@gmail.com> | 2009-04-15 00:07:00 +0400 |
---|---|---|
committer | Zoltan Varga <vargaz@gmail.com> | 2009-04-15 00:07:00 +0400 |
commit | dcd5d970fa88a42bafd8205afbe443d25adc871b (patch) | |
tree | d11437d22da8835c5efb6be32fe0a6ec9ac28926 /data | |
parent | 8f31ab70c48f604f9ad0f85f45375bc7a24bd5d2 (diff) |
2009-04-14 Zoltan Varga <vargaz@gmail.com>
* mono-gdb.py (MonoClassPrinter.to_string): Add a MonoClass* pretty
printer.
svn path=/trunk/mono/; revision=131695
Diffstat (limited to 'data')
-rw-r--r-- | data/gdb/ChangeLog | 5 | ||||
-rw-r--r-- | data/gdb/mono-gdb.py | 17 |
2 files changed, 22 insertions, 0 deletions
diff --git a/data/gdb/ChangeLog b/data/gdb/ChangeLog index f88aeabf9c5..58050296d29 100644 --- a/data/gdb/ChangeLog +++ b/data/gdb/ChangeLog @@ -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 diff --git a/data/gdb/mono-gdb.py b/data/gdb/mono-gdb.py index 8325b8a4f9f..bb40cba9849 100644 --- a/data/gdb/mono-gdb.py +++ b/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): |