# hp300 version of the script to dump out the kernel stack of # a process # # usage: xbt procp # # @(#)xbt 7.1 (Berkeley) 08/02/92 set $maxargs = 4 define xbt set $usrstack = (unsigned long *) &kstack set $p = (struct proc *) $arg0 set $paddr = $p->p_addr set $fix = (unsigned long *) $paddr - $usrstack set $paddr = (struct user *)$paddr set $xfp = (unsigned long *) $paddr->u_pcb.pcb_regs[10] set $xpc = (unsigned long *) $paddr->u_pcb.pcb_regs[11] printf "Process %s\n", &($p->p_comm[0]) while ($xfp > $usrstack) set $xfp += $fix printf "Function:\t" p/a $xpc set $i = 0 printf "\tArgs:\t" while ($i < $maxargs) set $arg = (unsigned long *) $xfp[$i + 2] if ($arg > $usrstack) set $arg += $fix end printf "%#x\t", (unsigned long) $arg set $i++ end printf "\n" set $xpc = $xfp[1] set $xfp = (unsigned long *) $xfp[0] end end