summaryrefslogtreecommitdiffstats
path: root/.gdbinit
diff options
context:
space:
mode:
Diffstat (limited to '.gdbinit')
-rw-r--r--.gdbinit29
1 files changed, 27 insertions, 2 deletions
diff --git a/.gdbinit b/.gdbinit
index 8598cf0ab..96e033fa8 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -104,9 +104,34 @@ define rp
print (struct RRegexp *)$arg0
else
if ($flags & RUBY_T_MASK) == RUBY_T_ARRAY
- printf "T_ARRAY: len=%ld ", ((struct RArray*)$arg0)->len
+ if ($flags & RUBY_FL_USER1)
+ set $len = (($flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
+ printf "T_ARRAY: len=%ld ", $len
+ printf "(embed) "
+ if ($len == 0)
+ printf "{(empty)} "
+ else
+ output/x *((VALUE*)((struct RArray*)$arg0)->as.ary) @ $len
+ printf " "
+ end
+ else
+ set $len = ((struct RArray*)$arg0)->as.heap.len
+ printf "T_ARRAY: len=%ld ", $len
+ if ($flags & RUBY_FL_USER2)
+ printf "(shared) shared="
+ output/x ((struct RArray*)$arg0)->as.heap.aux.shared
+ printf " "
+ else
+ printf "(ownership) capa=%ld ", ((struct RArray*)$arg0)->as.heap.aux.capa
+ end
+ if ($len == 0)
+ printf "{(empty)} "
+ else
+ output/x *((VALUE*)((struct RArray*)$arg0)->as.heap.ptr) @ $len
+ printf " "
+ end
+ end
print (struct RArray *)$arg0
- x/xw ((struct RArray*)$arg0)->ptr
else
if ($flags & RUBY_T_MASK) == RUBY_T_FIXNUM
printf "T_FIXNUM: "