1# hp300 version of the script to dump out the kernel stack of 2# a process 3# 4# usage: xbt procp 5# 6# @(#)xbt 8.2 (Berkeley) 04/24/95 7 8set $maxargs = 4 9 10define xbt 11 12 set $usrstack = (unsigned long *) &kstack 13 14 set $p = (struct proc *) $arg0 15 set $paddr = $p->p_addr 16 set $fix = (unsigned long *) $paddr - $usrstack 17 set $paddr = (struct user *)$paddr 18 set $xfp = (unsigned long *) $paddr->u_pcb.pcb_regs[0xa] 19 set $xpc = (unsigned long *) $paddr->u_pcb.pcb_regs[0xb] 20 21 printf "Process %s\n", &($p->p_comm[0]) 22 while ($xfp > $usrstack) 23 24 set $xfp += $fix 25 printf "Function:\t" 26 p/a $xpc 27 28 set $i = 0 29 printf "\tArgs:\t" 30 while ($i < $maxargs) 31 set $arg = (unsigned long *) $xfp[$i + 2] 32 if ($arg > $usrstack) 33 set $arg += $fix 34 end 35 printf "%#x\t", (unsigned long) $arg 36 set $i++ 37 end 38 printf "\n" 39 40 set $xpc = $xfp[1] 41 set $xfp = (unsigned long *) $xfp[0] 42 43 end 44end 45