(linenum→info "unix/slp.c:2238")

ruby/1.9.0/.gdbinit

    1: define rp
    2:   if (VALUE)$arg0 & RUBY_FIXNUM_FLAG
    3:     printf "FIXNUM: %d\n", $arg0 >> 1
    4:   else
    5:   if ((VALUE)$arg0 & ~(~(VALUE)0<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG
    6:     printf "SYMBOL(%d)\n", $arg0 >> RUBY_SPECIAL_SHIFT
    7:   else
    8:   if $arg0 == RUBY_Qfalse
    9:     echo false\n
   10:   else
   11:   if $arg0 == RUBY_Qtrue
   12:     echo true\n
   13:   else
   14:   if $arg0 == RUBY_Qnil
   15:     echo nil\n
   16:   else
   17:   if $arg0 == RUBY_Qundef
   18:     echo undef\n
   19:   else
   20:   if (VALUE)$arg0 & RUBY_IMMEDIATE_MASK
   21:     echo immediate\n
   22:   else
   23:   set $flags = ((struct RBasic*)$arg0)->flags
   24:   if ($flags & RUBY_T_MASK) == RUBY_T_NONE
   25:     printf "T_NONE: "
   26:     print (struct RBasic *)$arg0
   27:   else
   28:   if ($flags & RUBY_T_MASK) == RUBY_T_NIL
   29:     printf "T_NIL: "
   30:     print (struct RBasic *)$arg0
   31:   else
   32:   if ($flags & RUBY_T_MASK) == RUBY_T_OBJECT
   33:     printf "T_OBJECT: "
   34:     print (struct RObject *)$arg0
   35:   else
   36:   if ($flags & RUBY_T_MASK) == RUBY_T_CLASS
   37:     printf "T_CLASS: "
   38:     print (struct RClass *)$arg0
   39:   else
   40:   if ($flags & RUBY_T_MASK) == RUBY_T_ICLASS
   41:     printf "T_ICLASS: "
   42:     print (struct RClass *)$arg0
   43:   else
   44:   if ($flags & RUBY_T_MASK) == RUBY_T_MODULE
   45:     printf "T_MODULE: "
   46:     print (struct RClass *)$arg0
   47:   else
   48:   if ($flags & RUBY_T_MASK) == RUBY_T_FLOAT
   49:     printf "T_FLOAT: %.16g ", (((struct RFloat*)$arg0)->value)
   50:     print (struct RFloat *)$arg0
   51:   else
   52:   if ($flags & RUBY_T_MASK) == RUBY_T_STRING
   53:     printf "T_STRING: "
   54:     set print address off
   55:     output (char *)(($flags & RUBY_FL_USER1) ? \
   56:             ((struct RString*)$arg0)->as.heap.ptr : \
   57:             ((struct RString*)$arg0)->as.ary)
   58:     set print address on
   59:     printf " bytesize:%d ", ($flags & RUBY_FL_USER1) ? \
   60:             ((struct RString*)$arg0)->as.heap.len : \
   61:             (($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
   62:     if !($flags & RUBY_FL_USER1)
   63:       printf "(embed) "
   64:     else
   65:       if ($flags & RUBY_FL_USER2)
   66:         printf "(shared) "
   67:       end
   68:       if ($flags & RUBY_FL_USER3)
   69:         printf "(assoc) "
   70:       end
   71:     end
   72:     printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
   73:     if ($flags & RUBY_ENC_CODERANGE_MASK) == 0
   74:       printf "coderange:unknown "
   75:     else
   76:     if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_7BIT
   77:       printf "coderange:7bit "
   78:     else
   79:     if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_VALID
   80:       printf "coderange:valid "
   81:     else
   82:       printf "coderange:broken "
   83:     end
   84:     end
   85:     end
   86:     print (struct RString *)$arg0
   87:   else
   88:   if ($flags & RUBY_T_MASK) == RUBY_T_REGEXP
   89:     printf "T_REGEXP: "
   90:     set print address off
   91:     output ((struct RRegexp*)$arg0)->str
   92:     set print address on
   93:     printf " len:%d ", ((struct RRegexp*)$arg0)->len
   94:     if $flags & RUBY_FL_USER6
   95:       printf "(none) "
   96:     end
   97:     if $flags & RUBY_FL_USER5
   98:       printf "(literal) "
   99:     end
  100:     if $flags & RUBY_FL_USER4
  101:       printf "(fixed) "
  102:     end
  103:     printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
  104:     print (struct RRegexp *)$arg0
  105:   else
  106:   if ($flags & RUBY_T_MASK) == RUBY_T_ARRAY
  107:     printf "T_ARRAY: len=%d ", ((struct RArray*)$arg0)->len
  108:     print (struct RArray *)$arg0
  109:     x/xw ((struct RArray*)$arg0)->ptr
  110:   else
  111:   if ($flags & RUBY_T_MASK) == RUBY_T_FIXNUM
  112:     printf "T_FIXNUM: "
  113:     print (struct RBasic *)$arg0
  114:   else
  115:   if ($flags & RUBY_T_MASK) == RUBY_T_HASH
  116:     printf "T_HASH: ",
  117:     if ((struct RHash *)$arg0)->ntbl
  118:       printf "len=%d ", ((struct RHash *)$arg0)->ntbl->num_entries
  119:     end
  120:     print (struct RHash *)$arg0
  121:   else
  122:   if ($flags & RUBY_T_MASK) == RUBY_T_STRUCT
  123:     printf "T_STRUCT: len=%d ", \
  124:       (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
  125:        ($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) >> (RUBY_FL_USHIFT+1) : \
  126:        ((struct RStruct *)$arg0)->as.heap.len)
  127:     print (struct RStruct *)$arg0
  128:     x/xw (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
  129:           ((struct RStruct *)$arg0)->as.ary : \
  130:           ((struct RStruct *)$arg0)->as.heap.len)
  131:   else
  132:   if ($flags & RUBY_T_MASK) == RUBY_T_BIGNUM
  133:     printf "T_BIGNUM: sign=%d len=%d ", \
  134:       (($flags & RUBY_FL_USER1) != 0), \
  135:       (($flags & RUBY_FL_USER2) ? \
  136:        ($flags & (RUBY_FL_USER5|RUBY_FL_USER4|RUBY_FL_USER3)) >> (RUBY_FL_USHIFT+3) : \
  137:        ((struct RBignum*)$arg0)->as.heap.len)
  138:     if $flags & RUBY_FL_USER2
  139:       printf "(embed) "
  140:     end
  141:     print (struct RBignum *)$arg0
  142:     x/xw (($flags & RUBY_FL_USER2) ? \
  143:           ((struct RBignum*)$arg0)->as.ary : \
  144:           ((struct RBignum*)$arg0)->as.heap.digits)
  145:   else
  146:   if ($flags & RUBY_T_MASK) == RUBY_T_FILE
  147:     printf "T_FILE: "
  148:     print (struct RFile *)$arg0
  149:     output *((struct RFile *)$arg0)->fptr
  150:     printf "\n"
  151:   else
  152:   if ($flags & RUBY_T_MASK) == RUBY_T_TRUE
  153:     printf "T_TRUE: "
  154:     print (struct RBasic *)$arg0
  155:   else
  156:   if ($flags & RUBY_T_MASK) == RUBY_T_FALSE
  157:     printf "T_FALSE: "
  158:     print (struct RBasic *)$arg0
  159:   else
  160:   if ($flags & RUBY_T_MASK) == RUBY_T_DATA
  161:     printf "T_DATA: "
  162:     print (struct RData *)$arg0
  163:   else
  164:   if ($flags & RUBY_T_MASK) == RUBY_T_MATCH
  165:     printf "T_MATCH: "
  166:     print (struct RMatch *)$arg0
  167:   else
  168:   if ($flags & RUBY_T_MASK) == RUBY_T_SYMBOL
  169:     printf "T_SYMBOL: "
  170:     print (struct RBasic *)$arg0
  171:   else
  172:   if ($flags & RUBY_T_MASK) == RUBY_T_VALUES
  173:     printf "T_VALUES: "
  174:     print (struct RValues *)$arg0
  175:   else
  176:   if ($flags & RUBY_T_MASK) == RUBY_T_BLOCK
  177:     printf "T_BLOCK: "
  178:     print (struct RBasic *)$arg0
  179:   else
  180:   if ($flags & RUBY_T_MASK) == RUBY_T_UNDEF
  181:     printf "T_UNDEF: "
  182:     print (struct RBasic *)$arg0
  183:   else
  184:   if ($flags & RUBY_T_MASK) == RUBY_T_NODE
  185:     printf "T_NODE("
  186:     output (enum node_type)(($flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
  187:     printf "): "
  188:     print *(NODE *)$arg0
  189:   else
  190:     printf "unknown: "
  191:     print (struct RBasic *)$arg0
  192:   end
  193:   end
  194:   end
  195:   end
  196:   end
  197:   end
  198:   end
  199:   end
  200:   end
  201:   end
  202:   end
  203:   end
  204:   end
  205:   end
  206:   end
  207:   end
  208:   end
  209:   end
  210:   end
  211:   end
  212:   end
  213:   end
  214:   end
  215:   end
  216:   end
  217:   end
  218:   end
  219:   end
  220:   end
  221:   end
  222:   end
  223: end
  224: document rp
  225:   Print a Ruby's VALUE.
  226: end
  227: 
  228: define nd_type
  229:   print (enum node_type)((((NODE*)$arg0)->flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
  230: end
  231: document nd_type
  232:   Print a Ruby' node type.
  233: end
  234: 
  235: define nd_file
  236:   print ((NODE*)$arg0)->nd_file
  237: end
  238: document nd_file
  239:   Print the source file name of a node.
  240: end
  241: 
  242: define nd_line
  243:   print ((unsigned int)((((NODE*)$arg0)->flags>>RUBY_NODE_LSHIFT)&RUBY_NODE_LMASK))
  244: end
  245: document nd_line
  246:   Print the source line number of a node.
  247: end
  248: 
  249: # Print members of ruby node.
  250: 
  251: define nd_head
  252:   printf "u1.node: "
  253:   rp $arg0.u1.node
  254: end
  255: 
  256: define nd_alen
  257:   printf "u2.argc: "
  258:   p $arg0.u2.argc
  259: end
  260: 
  261: define nd_next
  262:   printf "u3.node: "
  263:   rp $arg0.u3.node
  264: end
  265: 
  266: 
  267: define nd_cond
  268:   printf "u1.node: "
  269:   rp $arg0.u1.node
  270: end
  271: 
  272: define nd_body
  273:   printf "u2.node: "
  274:   rp $arg0.u2.node
  275: end
  276: 
  277: define nd_else
  278:   printf "u3.node: "
  279:   rp $arg0.u3.node
  280: end
  281: 
  282: 
  283: define nd_orig
  284:   printf "u3.value: "
  285:   rp $arg0.u3.value
  286: end
  287: 
  288: 
  289: define nd_resq
  290:   printf "u2.node: "
  291:   rp $arg0.u2.node
  292: end
  293: 
  294: define nd_ensr
  295:   printf "u3.node: "
  296:   rp $arg0.u3.node
  297: end
  298: 
  299: 
  300: define nd_1st
  301:   printf "u1.node: "
  302:   rp $arg0.u1.node
  303: end
  304: 
  305: define nd_2nd
  306:   printf "u2.node: "
  307:   rp $arg0.u2.node
  308: end
  309: 
  310: 
  311: define nd_stts
  312:   printf "u1.node: "
  313:   rp $arg0.u1.node
  314: end
  315: 
  316: 
  317: define nd_entry
  318:   printf "u3.entry: "
  319:   p $arg0.u3.entry
  320: end
  321: 
  322: define nd_vid
  323:   printf "u1.id: "
  324:   p $arg0.u1.id
  325: end
  326: 
  327: define nd_cflag
  328:   printf "u2.id: "
  329:   p $arg0.u2.id
  330: end
  331: 
  332: define nd_cval
  333:   printf "u3.value: "
  334:   rp $arg0.u3.value
  335: end
  336: 
  337: 
  338: define nd_cnt
  339:   printf "u3.cnt: "
  340:   p $arg0.u3.cnt
  341: end
  342: 
  343: define nd_tbl
  344:   printf "u1.tbl: "
  345:   p $arg0.u1.tbl
  346: end
  347: 
  348: 
  349: define nd_var
  350:   printf "u1.node: "
  351:   rp $arg0.u1.node
  352: end
  353: 
  354: define nd_ibdy
  355:   printf "u2.node: "
  356:   rp $arg0.u2.node
  357: end
  358: 
  359: define nd_iter
  360:   printf "u3.node: "
  361:   rp $arg0.u3.node
  362: end
  363: 
  364: 
  365: define nd_value
  366:   printf "u2.node: "
  367:   rp $arg0.u2.node
  368: end
  369: 
  370: define nd_aid
  371:   printf "u3.id: "
  372:   p $arg0.u3.id
  373: end
  374: 
  375: 
  376: define nd_lit
  377:   printf "u1.value: "
  378:   rp $arg0.u1.value
  379: end
  380: 
  381: 
  382: define nd_frml
  383:   printf "u1.node: "
  384:   rp $arg0.u1.node
  385: end
  386: 
  387: define nd_rest
  388:   printf "u2.argc: "
  389:   p $arg0.u2.argc
  390: end
  391: 
  392: define nd_opt
  393:   printf "u1.node: "
  394:   rp $arg0.u1.node
  395: end
  396: 
  397: 
  398: define nd_recv
  399:   printf "u1.node: "
  400:   rp $arg0.u1.node
  401: end
  402: 
  403: define nd_mid
  404:   printf "u2.id: "
  405:   p $arg0.u2.id
  406: end
  407: 
  408: define nd_args
  409:   printf "u3.node: "
  410:   rp $arg0.u3.node
  411: end
  412: 
  413: 
  414: define nd_noex
  415:   printf "u1.id: "
  416:   p $arg0.u1.id
  417: end
  418: 
  419: define nd_defn
  420:   printf "u3.node: "
  421:   rp $arg0.u3.node
  422: end
  423: 
  424: 
  425: define nd_old
  426:   printf "u1.id: "
  427:   p $arg0.u1.id
  428: end
  429: 
  430: define nd_new
  431:   printf "u2.id: "
  432:   p $arg0.u2.id
  433: end
  434: 
  435: 
  436: define nd_cfnc
  437:   printf "u1.cfunc: "
  438:   p $arg0.u1.cfunc
  439: end
  440: 
  441: define nd_argc
  442:   printf "u2.argc: "
  443:   p $arg0.u2.argc
  444: end
  445: 
  446: 
  447: define nd_cname
  448:   printf "u1.id: "
  449:   p $arg0.u1.id
  450: end
  451: 
  452: define nd_super
  453:   printf "u3.node: "
  454:   rp $arg0.u3.node
  455: end
  456: 
  457: 
  458: define nd_modl
  459:   printf "u1.id: "
  460:   p $arg0.u1.id
  461: end
  462: 
  463: define nd_clss
  464:   printf "u1.value: "
  465:   rp $arg0.u1.value
  466: end
  467: 
  468: 
  469: define nd_beg
  470:   printf "u1.node: "
  471:   rp $arg0.u1.node
  472: end
  473: 
  474: define nd_end
  475:   printf "u2.node: "
  476:   rp $arg0.u2.node
  477: end
  478: 
  479: define nd_state
  480:   printf "u3.state: "
  481:   p $arg0.u3.state
  482: end
  483: 
  484: define nd_rval
  485:   printf "u2.value: "
  486:   rp $arg0.u2.value
  487: end
  488: 
  489: 
  490: define nd_nth
  491:   printf "u2.argc: "
  492:   p $arg0.u2.argc
  493: end
  494: 
  495: 
  496: define nd_tag
  497:   printf "u1.id: "
  498:   p $arg0.u1.id
  499: end
  500: 
  501: define nd_tval
  502:   printf "u2.value: "
  503:   rp $arg0.u2.value
  504: end
  505: 
  506: define rb_p
  507:   call rb_p($arg0)
  508: end
  509: 
  510: define rb_id2name
  511:   call rb_id2name($arg0)
  512: end
  513: 
  514: define rb_classname
  515:   call classname($arg0)
  516:   rb_p $
  517:   print *(struct RClass*)$arg0
  518: end
  519: 
  520: define rb_backtrace
  521:   call rb_backtrace()
  522: end
1
Syntax (Markdown)