123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- set pagination off
- set print null-stop
- define prTS
- set $o = &(((TString *)(($arg0).value))->tsv)
- printf "Common header: next = %p, marked = 0x%01x\n", $o->next, $o->marked
- printf "String: hash = 0x%08x, len = %u : %s\n", $o->hash, $o->len, (char *)($o+1)
- end
- define prTnodes
- set $o = (Table *)($arg0)
- set $n = 1<<($o->lsizenode)
- set $i = 0
- while $i < $n
- set $nd = ($o->node) + $i
- if $nd->i_key.nk.tt && $nd->i_val.tt
- if $nd->i_key.nk.tt == 6
- printf "%4u: %s %2i\n", $i, $nd->i_key.nk.tt , $nd->i_val.tt
- else
- printf "%4u: %2i %2i\n", $i, $nd->i_key.nk.tt , $nd->i_val.tt
- end
- end
- set $i = $i +1
- end
- end
- define prTarray
- set $o = (Table *)($arg0)
- set $n = $o->sizearray
- set $i = 0
- while $i < $n
- set $nd = ($o->array) + $i
- prTV $nd
- set $i = $i +1
- end
- end
- define prTV
- if $arg0
- set $type = ($arg0).tt
- set $val = ($arg0).value
- if $type == 0
- # NIL
- printf "Nil\n"
- end
- if $type == 1
- # Boolean
- printf "Boolean: %u\n", $val.n
- end
- if $type == 2
- # Light User Data
- printf "Light Udata: %p\n", $val.p
- end
- if $type == 3
- # Number
- printf "Number: %u\n", $val.n
- end
- if $type == 4
- # String
- printf "String: %s\n", (char *)($val.p)+16
- end
- if $type == 5
- # Table
- set $o = &($val->gc.h)
- printf "Common header: next = %p, marked = 0x%01x\n", $o->next, $o->marked
- printf "Nodes: %4i %p\n", 2<<($o->lsizenode), $o->node
- printf "Arry: %4i %p\n", $o->sizearray, $o->array
- end
- if $type == 6
- # Function
- set $o = &($val->gc.cl.c)
- printf "Common header: next = %p, marked = 0x%01x\n", $o->next, $o->marked
- if $o->isC == 0
- set $o = &($val->gc.cl.l)
- printf "LClosure: nupvalues = %u, gclist = %p, env = %p, p = %p\n", \
- $o->nupvalues, $o->gclist, $o->env, $o->p
- else
- printf "CClosure: nupvalues = %u, gclist = %p, env = %p, f = %p\np", \
- $o->nupvalues, $o->gclist, $o->env, $o->f
- end
- end
- if $type == 7
- # UserData
- set $o = &($val->gc.u.uv)
- printf "Common header: next = %p, marked = 0x%01x\n", $o->next, $o->marked
- printf "UD = %p Userdata: metatable = ", ($o+1))
- print ($o)->metatable
- end
- if $type == 8
- # Thread
- end
- if $type == 21
- # ROTable
- printf "ROTable: %p\n", $val.p
- end
- if $type == 38
- # Light Function
- printf "Light Func: %p\n", $val.p
- end
- end
- end
- define prT
- print *(Table*)($arg0)
- end
- define prL
- if L > 0
- printf " stack: %u\n", L->top-L->base
- printf " hooking: %u, %u, %u, %u, %p\n", L->hookmask, L->allowhook, L->basehookcount, L->hookcount, L->hook
- end
- end
- define dumpstrt
- set $st = $arg0
- set $i = 0
- while $i< $st->size
- set $o = &(((TString *)($st->hash[$i]))->tsv)
- while $o
- if $o->next
- printf "Slot: %5i %p %p %08x %02x %4u", \
- $i, $o, $o->next, $o->hash, $o->marked, $o->len
- else
- printf "Slot: %5i %p %08x %02x %4u", \
- $i, $o, $o->hash, $o->marked, $o->len
- end
- if $o->marked & 0x80
- printf "* %s\n", *(char **)($o+1)
- else
- printf " %s\n", (char *)($o+1)
- end
- set $o = &(((TString *)($o->next))->tsv)
- end
- set $i = $i + 1
- end
- end
- define dumpRAMstrt
- dumpstrt &(L->l_G->strt)
- end
- define dumpROstrt
- dumpstrt &(L->l_G->ROstrt)
- end
- define graylist
- set $n = $arg0
- while $n
- printf "%p %2u %02X\n",$n, $n->gch.tt, $n->gch.marked
- set $n=$n->gch.next
- end
- end
- define prPC
- printf "Excuting instruction %i: %08x\n", (pc - cl->p->code)+1-1, i
- end
- define where
- set $f=cl->p
- printf "<%s:%u,%u>, opcode %u\n",\
- (char *)$f->source+17, $f->linedefined, $f->lastlinedefined, pc - $f->code
- end
- define callinfo
- printf "%p: ", L->ci
- print *L->ci
- end
- define luastack
- set $i = 0
- set $ci = L->base_ci
- set $s = L->stack
- set $last = L->stack_last - L->stack
- printf "stack = %p, last: %i, size: %i, " , $s, $last, L->stacksize
- if $last+6==L->stacksize
- printf "(OK)\n"
- else
- printf "(MISMATCH)\n"
- end
- printf " Ndx top base func\n"
- while $ci <= L->ci
- printf "%3u %6i %6i %6i\n", $i++, $ci->top-$s, $ci->base-$s, ($ci++)->func-$s
- end
- end
- define stacklen
- printf "%i top: %p, base: %p\n", \
- L->ci->top - L->base, L->ci->top, L->base
- end
- define stackcheck
- set $ci = L->ci
- printf "Used: %i, Headroom: %i, Total: %i\n", \
- L->top-$ci->base-1, $ci->top-L->top+1, $ci->top-$ci->base
- end
|