summaryrefslogtreecommitdiff
path: root/.gdbinit
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-05 01:42:09 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-05 01:42:09 +0000
commite8b0aa4ca047b06d657735e2cdf10c3f58f2d9bb (patch)
tree1f4b80581e6454658b748b9c45f54ffb008f35fe /.gdbinit
parent6bbcf6f43d55e3b617f780f6c2812195622b15fe (diff)
* include/ruby/{node,ruby}.h, ruby.c: added enum constants for gdb
support. [ruby-dev:31066] * .gdbinit: some improvements. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to '.gdbinit')
-rw-r--r--.gdbinit399
1 files changed, 358 insertions, 41 deletions
diff --git a/.gdbinit b/.gdbinit
index 1eea05d92b..eb2e30da7e 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -1,19 +1,9 @@
-set $fl_ushift = 11
-set $fl_user1 = 1 << ($fl_ushift + 0)
-set $fl_user1 = 1 << ($fl_ushift + 1)
-set $fl_user2 = 1 << ($fl_ushift + 2)
-set $fl_user3 = 1 << ($fl_ushift + 3)
-set $fl_user4 = 1 << ($fl_ushift + 4)
-set $fl_user5 = 1 << ($fl_ushift + 5)
-set $fl_user6 = 1 << ($fl_ushift + 6)
-set $fl_user7 = 1 << ($fl_ushift + 7)
-
define rp
- if $arg0 & 1
- printf "FIXNUM: %d\n", ((long)$arg0) >> 1
+ if (long)$arg0 & 1
+ printf "FIXNUM: %d\n", $arg0 >> 1
else
- if ($arg0 & 0xff) == 0x0e
- printf "SYMBOL(%d)\n", ((long)$arg0) >> 8
+ if ((long)$arg0 & 0xff) == 0x0e
+ printf "SYMBOL(%d)\n", $arg0 >> 8
else
if $arg0 == 0
echo false\n
@@ -27,84 +17,115 @@ define rp
if $arg0 == 6
echo undef\n
else
- if $arg0 & 0x03
+ if (long)$arg0 & 0x03
echo immediate\n
else
set $flags = ((struct RBasic*)$arg0)->flags
if ($flags & 0x1f) == 0x00
- printf "T_NONE(0x%08x)\n", $arg0
+ printf "T_NONE: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x01
- printf "T_NIL(0x%08x)\n", $arg0
+ printf "T_NIL: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x02
- printf "T_OBJECT(0x%08x)\n", $arg0
+ printf "T_OBJECT: "
+ print (struct RObject *)$arg0
else
if ($flags & 0x1f) == 0x03
- printf "T_CLASS(0x%08x)\n", $arg0
+ printf "T_CLASS: "
+ print (struct RClass *)$arg0
else
if ($flags & 0x1f) == 0x04
- printf "T_ICLASS(0x%08x)\n", $arg0
+ printf "T_ICLASS: "
+ print (struct RClass *)$arg0
else
if ($flags & 0x1f) == 0x05
- printf "T_MODULE(0x%08x)\n", $arg0
+ printf "T_MODULE: "
+ print (struct RClass *)$arg0
else
if ($flags & 0x1f) == 0x06
- printf "T_FLOAT(0x%08x): %.16g\n", $arg0, (((struct RFloat*)$arg0)->value)
+ printf "T_FLOAT: %.16g ", (((struct RFloat*)$arg0)->value)
+ print (struct RFloat *)$arg0
else
if ($flags & 0x1f) == 0x07
- printf "T_STRING(0x%08x): \"%s\"\n", $arg0, ($flags & $fl_user1) ? ((struct RString*)$arg0)->as.heap.ptr : ((struct RString*)$arg0)->as.ary
+ printf "T_STRING: \"%s\" ", ($flags & RUBY_FL_USER1) ? ((struct RString*)$arg0)->as.heap.ptr : ((struct RString*)$arg0)->as.ary
+ print (struct RString *)$arg0
else
if ($flags & 0x1f) == 0x08
- printf "T_REGEXP(0x%08x): \"%s\"\n", $arg0, (((struct RRegexp*)$arg0)->str)
+ printf "T_REGEXP: \"%s\" ", (((struct RRegexp*)$arg0)->str)
+ print (struct RRegexp *)$arg0
else
if ($flags & 0x1f) == 0x09
- printf "T_ARRAY(0x%08x) len=%d\n", $arg0, ((struct RArray*)$arg0)->len
+ printf "T_ARRAY: len=%d ", ((struct RArray*)$arg0)->len
+ print (struct RArray *)$arg0
+ x/xw ((struct RArray*)$arg0)->ptr
else
if ($flags & 0x1f) == 0x0a
- printf "T_FIXNUM(0x%08x)\n", $arg0
+ printf "T_FIXNUM: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x0b
- printf "T_HASH(0x%08x)\n", $arg0
+ printf "T_HASH: len=%d ", ((struct RHash *)$arg0)->tbl ? ((struct RHash *)$arg0)->tbl->num_entries : 0
+ print (struct RHash *)$arg0
else
if ($flags & 0x1f) == 0x0c
- printf "T_STRUCT(0x%08x)\n", $arg0
+ printf "T_STRUCT: len=%d ", (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? ($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) >> (RUBY_FL_USHIFT+1) : ((struct RStruct *)$arg0)->as.heap.len)
+ print (struct RStruct *)$arg0
+ x/xw (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? ((struct RStruct *)$arg0)->as.ary : ((struct RStruct *)$arg0)->as.heap.len)
else
if ($flags & 0x1f) == 0x0d
- printf "T_BIGNUM(0x%08x): sign=%d len=%d\n", $arg0, ((struct RBignum*)$arg0)->sign, ((struct RBignum*)$arg0)->len
+ printf "T_BIGNUM: sign=%d len=%d ", ((struct RBignum*)$arg0)->sign, ((struct RBignum*)$arg0)->len
+ print (struct RBignum *)$arg0
+ x/xw ((struct RBignum*)$arg0)->digits
else
if ($flags & 0x1f) == 0x0e
- printf "T_FILE(0x%08x)\n", $arg0
+ printf "T_FILE: "
+ print (struct RFile *)$arg0
+ output *((struct RFile *)$arg0)->fptr
+ printf "\n"
else
if ($flags & 0x1f) == 0x10
- printf "T_TRUE(0x%08x)\n", $arg0
+ printf "T_TRUE: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x11
- printf "T_FALSE(0x%08x)\n", $arg0
+ printf "T_FALSE: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x12
- printf "T_DATA(0x%08x)\n", $arg0
+ printf "T_DATA: "
+ print (struct RData *)$arg0
else
if ($flags & 0x1f) == 0x13
- printf "T_MATCH(0x%08x)\n", $arg0
+ printf "T_MATCH: "
+ print (struct RMatch *)$arg0
else
if ($flags & 0x1f) == 0x14
- printf "T_SYMBOL(0x%08x)\n", $arg0
+ printf "T_SYMBOL: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x1a
- printf "T_VALUES(0x%08x)\n", $arg0
+ printf "T_VALUES: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x1b
- printf "T_BLOCK(0x%08x)\n", $arg0
+ printf "T_BLOCK: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x1c
- printf "T_UNDEF(0x%08x)\n", $arg0
+ printf "T_UNDEF: "
+ print (struct RBasic *)$arg0
else
if ($flags & 0x1f) == 0x1f
- printf "T_NODE(0x%08x)\n", $arg0
- print (enum node_type)(($flags >> 11) & 0xff)
+ printf "T_NODE("
+ output (enum node_type)(($flags&NODE_TYPEMASK)>>NODE_TYPESHIFT)
+ printf "): "
+ print *(NODE *)$arg0
else
- printf "unknown(0x%08x)\n", $arg0
+ printf "unknown: "
+ print (struct RBasic *)$arg0
end
end
end
@@ -140,3 +161,299 @@ end
document rp
Print a Ruby's VALUE.
end
+
+define nd_type
+ print (enum node_type)((((NODE*)$arg0)->flags&NODE_TYPEMASK)>>NODE_TYPESHIFT)
+end
+document nd_type
+ Print a Ruby' node type.
+end
+
+define nd_file
+ print ((NODE*)$arg0)->nd_file
+end
+document nd_file
+ Print the source file name of a node.
+end
+
+define nd_line
+ print ((unsigned int)((((NODE*)$arg0)->flags>>NODE_LSHIFT)&NODE_LMASK))
+end
+document nd_line
+ Print the source line number of a node.
+end
+
+# Print members of ruby node.
+
+define nd_head
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+define nd_alen
+ printf "u2.argc: "
+ p $arg0.u2.argc
+end
+
+define nd_next
+ printf "u3.node: "
+ rp $arg0.u3.node
+end
+
+
+define nd_cond
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+define nd_body
+ printf "u2.node: "
+ rp $arg0.u2.node
+end
+
+define nd_else
+ printf "u3.node: "
+ rp $arg0.u3.node
+end
+
+
+define nd_orig
+ printf "u3.value: "
+ rp $arg0.u3.value
+end
+
+
+define nd_resq
+ printf "u2.node: "
+ rp $arg0.u2.node
+end
+
+define nd_ensr
+ printf "u3.node: "
+ rp $arg0.u3.node
+end
+
+
+define nd_1st
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+define nd_2nd
+ printf "u2.node: "
+ rp $arg0.u2.node
+end
+
+
+define nd_stts
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+
+define nd_entry
+ printf "u3.entry: "
+ p $arg0.u3.entry
+end
+
+define nd_vid
+ printf "u1.id: "
+ p $arg0.u1.id
+end
+
+define nd_cflag
+ printf "u2.id: "
+ p $arg0.u2.id
+end
+
+define nd_cval
+ printf "u3.value: "
+ rp $arg0.u3.value
+end
+
+
+define nd_cnt
+ printf "u3.cnt: "
+ p $arg0.u3.cnt
+end
+
+define nd_tbl
+ printf "u1.tbl: "
+ p $arg0.u1.tbl
+end
+
+
+define nd_var
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+define nd_ibdy
+ printf "u2.node: "
+ rp $arg0.u2.node
+end
+
+define nd_iter
+ printf "u3.node: "
+ rp $arg0.u3.node
+end
+
+
+define nd_value
+ printf "u2.node: "
+ rp $arg0.u2.node
+end
+
+define nd_aid
+ printf "u3.id: "
+ p $arg0.u3.id
+end
+
+
+define nd_lit
+ printf "u1.value: "
+ rp $arg0.u1.value
+end
+
+
+define nd_frml
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+define nd_rest
+ printf "u2.argc: "
+ p $arg0.u2.argc
+end
+
+define nd_opt
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+
+define nd_recv
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+define nd_mid
+ printf "u2.id: "
+ p $arg0.u2.id
+end
+
+define nd_args
+ printf "u3.node: "
+ rp $arg0.u3.node
+end
+
+
+define nd_noex
+ printf "u1.id: "
+ p $arg0.u1.id
+end
+
+define nd_defn
+ printf "u3.node: "
+ rp $arg0.u3.node
+end
+
+
+define nd_old
+ printf "u1.id: "
+ p $arg0.u1.id
+end
+
+define nd_new
+ printf "u2.id: "
+ p $arg0.u2.id
+end
+
+
+define nd_cfnc
+ printf "u1.cfunc: "
+ p $arg0.u1.cfunc
+end
+
+define nd_argc
+ printf "u2.argc: "
+ p $arg0.u2.argc
+end
+
+
+define nd_cname
+ printf "u1.id: "
+ p $arg0.u1.id
+end
+
+define nd_super
+ printf "u3.node: "
+ rp $arg0.u3.node
+end
+
+
+define nd_modl
+ printf "u1.id: "
+ p $arg0.u1.id
+end
+
+define nd_clss
+ printf "u1.value: "
+ rp $arg0.u1.value
+end
+
+
+define nd_beg
+ printf "u1.node: "
+ rp $arg0.u1.node
+end
+
+define nd_end
+ printf "u2.node: "
+ rp $arg0.u2.node
+end
+
+define nd_state
+ printf "u3.state: "
+ p $arg0.u3.state
+end
+
+define nd_rval
+ printf "u2.value: "
+ rp $arg0.u2.value
+end
+
+
+define nd_nth
+ printf "u2.argc: "
+ p $arg0.u2.argc
+end
+
+
+define nd_tag
+ printf "u1.id: "
+ p $arg0.u1.id
+end
+
+define nd_tval
+ printf "u2.value: "
+ rp $arg0.u2.value
+end
+
+define rb_p
+ call rb_p($arg0)
+end
+
+define rb_id2name
+ call rb_id2name($arg0)
+end
+
+define rb_classname
+ call classname($arg0)
+ rb_p $
+ print *(struct RClass*)$arg0
+end
+
+define rb_backtrace
+ call rb_backtrace()
+end