Allow gdb's rp to work on classes offline
It's useful to be able to get information about classes without a running process, ie. when debugging a coredump.
This commit is contained in:
parent
e3dd766e99
commit
f13e86a70e
Notes:
git
2025-04-10 18:34:02 +00:00
16
.gdbinit
16
.gdbinit
@ -523,14 +523,14 @@ document rp_bignum
|
|||||||
end
|
end
|
||||||
|
|
||||||
define rp_class
|
define rp_class
|
||||||
|
set $class_and_classext = (struct RClass_and_rb_classext_t *)($arg0)
|
||||||
printf "(struct RClass *) %p", (void*)$arg0
|
printf "(struct RClass *) %p", (void*)$arg0
|
||||||
if RCLASS_ORIGIN((struct RClass *)($arg0)) != $arg0
|
if $class_and_classext->classext->origin_ != (VALUE)$arg0
|
||||||
printf " -> %p", RCLASS_ORIGIN((struct RClass *)($arg0))
|
printf " -> %p", $class_and_classext->classext->origin_
|
||||||
end
|
end
|
||||||
printf "\n"
|
printf "\n"
|
||||||
rb_classname $arg0
|
rb_classname $arg0
|
||||||
print/x *(struct RClass *)($arg0)
|
print/x *$class_and_classext
|
||||||
print *RCLASS_EXT((struct RClass *)($arg0))
|
|
||||||
end
|
end
|
||||||
document rp_class
|
document rp_class
|
||||||
Print the content of a Class/Module.
|
Print the content of a Class/Module.
|
||||||
@ -896,10 +896,10 @@ document rb_method_entry
|
|||||||
end
|
end
|
||||||
|
|
||||||
define rb_classname
|
define rb_classname
|
||||||
# up to 128bit int
|
set $rb_classname = ((struct RClass_and_rb_classext_t*)$arg0)->classext->classpath
|
||||||
set $rb_classname = rb_mod_name($arg0)
|
if $rb_classname != RUBY_Qfalse
|
||||||
if $rb_classname != RUBY_Qnil
|
print_string $rb_classname
|
||||||
rp $rb_classname
|
printf "\n"
|
||||||
else
|
else
|
||||||
echo anonymous class/module\n
|
echo anonymous class/module\n
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user