Skip to content

Commit f13e86a

Browse files
committed
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.
1 parent e3dd766 commit f13e86a

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

.gdbinit

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -523,14 +523,14 @@ document rp_bignum
523523
end
524524

525525
define rp_class
526+
set $class_and_classext = (struct RClass_and_rb_classext_t *)($arg0)
526527
printf "(struct RClass *) %p", (void*)$arg0
527-
if RCLASS_ORIGIN((struct RClass *)($arg0)) != $arg0
528-
printf " -> %p", RCLASS_ORIGIN((struct RClass *)($arg0))
528+
if $class_and_classext->classext->origin_ != (VALUE)$arg0
529+
printf " -> %p", $class_and_classext->classext->origin_
529530
end
530531
printf "\n"
531532
rb_classname $arg0
532-
print/x *(struct RClass *)($arg0)
533-
print *RCLASS_EXT((struct RClass *)($arg0))
533+
print/x *$class_and_classext
534534
end
535535
document rp_class
536536
Print the content of a Class/Module.
@@ -896,10 +896,10 @@ document rb_method_entry
896896
end
897897

898898
define rb_classname
899-
# up to 128bit int
900-
set $rb_classname = rb_mod_name($arg0)
901-
if $rb_classname != RUBY_Qnil
902-
rp $rb_classname
899+
set $rb_classname = ((struct RClass_and_rb_classext_t*)$arg0)->classext->classpath
900+
if $rb_classname != RUBY_Qfalse
901+
print_string $rb_classname
902+
printf "\n"
903903
else
904904
echo anonymous class/module\n
905905
end

0 commit comments

Comments
 (0)