diff options
| author | gwr <gwr@NetBSD.org> | 1997-02-12 22:09:45 +0000 |
|---|---|---|
| committer | gwr <gwr@NetBSD.org> | 1997-02-12 22:09:45 +0000 |
| commit | 48faabf317999ce87848ffc09c14de2e88028e1d (patch) | |
| tree | 5a2436472278c37f7dae9707dc6e2171701e5359 /sys/gdbscripts | |
| parent | b2d40fd746dfa414f5ed5293ca61757bae9ab5d9 (diff) | |
Macros for gdb when debugging the kernel (from 4.4-Lite2).
Diffstat (limited to 'sys/gdbscripts')
| -rw-r--r-- | sys/gdbscripts/bdump | 103 | ||||
| -rw-r--r-- | sys/gdbscripts/kdump | 37 | ||||
| -rw-r--r-- | sys/gdbscripts/pgrpdump | 21 | ||||
| -rw-r--r-- | sys/gdbscripts/stats | 19 | ||||
| -rw-r--r-- | sys/gdbscripts/vchain | 28 | ||||
| -rw-r--r-- | sys/gdbscripts/vdump | 12 | ||||
| -rw-r--r-- | sys/gdbscripts/xps | 32 |
7 files changed, 252 insertions, 0 deletions
diff --git a/sys/gdbscripts/bdump b/sys/gdbscripts/bdump new file mode 100644 index 00000000000..29ac137edf5 --- /dev/null +++ b/sys/gdbscripts/bdump @@ -0,0 +1,103 @@ +# Count the number of buffers in the buffer cache for which +# bp->b_flags & $bufcount_match is non-0. +# +# @(#)bdump 8.1 (Berkeley) 6/10/93 + +set $bufcount_match=0x020000 +define bufcount + + set $i = 0 + set $num = 0 + + while ($i < 512) + + set $bp = bufhash[$i].b_forw + while ($bp != bufhash[$i].b_back) + if ($bp->b_flags & $bufcount_match) + set $num++ + end + set $bp = $bp->b_forw + end + # printf "bucket: %d cumulative %d\n", $i, $num + set $i++ + end + printf "Number of buffers with flags & %x in hash table: %d\n", $bufcount_match, $num +end + +# Dump the entire buffer cache. + +define bufdump + + set $i = 0 + set $num = 0 + + while ($i < 512) + + set $bp = bufhash[$i].b_forw + while ($bp != bufhash[$i].b_back) + printf "bp=0x%x flags=0x%x vp=0x%x lblkno=0x%x blkno=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_blkno + set $num++ + set $bp = $bp->b_forw + end + set $i++ + end + printf "Number of buffers in hash table: %d\n", $num +end + +# Dump the buffers in a particular hashbucket. +# usage: dumpbucket bucketnumber +define dumpbucket + + set $num = 0 + set $bp = bufhash[$arg0].b_forw + while ($bp != bufhash[$arg0].b_back) + printf "bp=0x%x flags=0x%x vp=0x%x lblkno=0x%x blkno=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_blkno + set $num++ + set $bp = $bp->b_forw + end + printf "Number of buffers in bucket %d: %d\n", $arg0, $num +end + +# Dump the buffers on the empty and age queues + +define bdumpnew + + set $i = 0 + set $num = 0 + + while ($i < 4) + + printf "Queue %d\n", $i + set $bp = (struct buf *)bufqueues[$i].qe_next + while ($bp) + printf "bp=0x%x flags=0x%x vp=0x%x lbn=%d size=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_bufsize + set $num++ + set $bp = (struct buf *)$bp->b_freelist.qe_next + end + set $i++ + end + printf "Number of buffers in free lists: %d\n", $num +end + +define dumpchain + + set $bp = (struct buf *)$arg0 + while ($bp) + printf "bp=0x%x flags=0x%x bn=0x%x lbn=%d count=%d size=%d\n", $bp, $bp->b_flags, $bp->b_blkno, $bp->b_lblkno, $bp->b_bcount, $bp->b_bufsize + set $bp = (struct buf *)$bp->b_vnbufs.qe_next + end +end + +define dumpq + + set $num = 0 + + printf "Queue %d\n", $arg0 + set $bp = (struct buf *)bufqueues[$arg0].qe_next + while ($bp) + printf "bp=0x%x flags=0x%x vp=0x%x lbn=%d size=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_bufsize + set $num++ + set $bp = (struct buf *)$bp->b_freelist.qe_next + end + printf "Number of buffers on queue %d: %d\n", $arg0, $num +end diff --git a/sys/gdbscripts/kdump b/sys/gdbscripts/kdump new file mode 100644 index 00000000000..6fd5ba27aff --- /dev/null +++ b/sys/gdbscripts/kdump @@ -0,0 +1,37 @@ +# Dump kmem statistics +# @(#)kdump 8.1 (Berkeley) 6/10/93 + +set $last=75 +set $seg=43 + +# kmem_hdr +define kmemhdr + printf "\tINUSE\tCALLS\tMEMUSED\tLIMBLK\tMAPBLK\tMAXUSED\t\tLIMIT\n" +end + +# pkmem <ptr> +define pkmem + set $kp=(struct kmemstats *)$arg0 + set $n = (struct kmemstats *)$kp - (struct kmemstats *)kmemstats + printf "%d:\t%d\t%d", $n, $kp->ks_inuse, $kp->ks_calls + printf "\t0x%x\t%d", $kp->ks_memuse, $kp->ks_limblocks + printf "\t%d\t0x%x\t\t%d\n", $kp->ks_mapblocks, $kp->ks_maxused, $kp->ks_limit +end + +define kmemdump + set $kp=(struct kmemstats *)(kmemstats + $arg0) + kmemhdr + pkmem $kp +end + +define kdumpall + set $i=0 + + kmemhdr + set $kp = (struct kmemstats *)kmemstats + while ($i < $last) + pkmem $kp + set $kp++ + set $i++ + end +end diff --git a/sys/gdbscripts/pgrpdump b/sys/gdbscripts/pgrpdump new file mode 100644 index 00000000000..e5b714c59ba --- /dev/null +++ b/sys/gdbscripts/pgrpdump @@ -0,0 +1,21 @@ +# @(#)pgrpdump 8.1 (Berkeley) 6/10/93 + +define allpgrps + set $lim = pidhashmask + 1 + set $i = 0 + while ($i < $lim) + if (pgrphash[$i]) + printf "--- pgrphash[%d] ---\n", $i + pgrpchain pgrphash[$i] + end + set $i++ + end +end + +define pgrpchain + set $pgrp = (struct pgrp *)$arg0 + while ($pgrp) + print *$pgrp + set $pgrp = $pgrp->pg_hforw + end +end diff --git a/sys/gdbscripts/stats b/sys/gdbscripts/stats new file mode 100644 index 00000000000..69bdf69bf82 --- /dev/null +++ b/sys/gdbscripts/stats @@ -0,0 +1,19 @@ +# @(#)stats 8.1 (Berkeley) 6/10/93 +# +# disk statistics + +define dstat + set $op=(struct sdop *)&($arg0[$arg2]) + set $i=$arg1 + while ($i) + printf "$arg3 " + printf "%d %d 0x%x 0x%x %d", $op->bp, $op->bufsize, $op->blkno, $op->when.tv_sec, $op->when.tv_usec + if ($op->op & 1) + printf " READ\n" + else + printf " WRITE\n" + end + set $op = $op + 1 + set $i = $i - 1 + end +end diff --git a/sys/gdbscripts/vchain b/sys/gdbscripts/vchain new file mode 100644 index 00000000000..3ccd46961fa --- /dev/null +++ b/sys/gdbscripts/vchain @@ -0,0 +1,28 @@ +# @(#)vchain 8.1 (Berkeley) 6/10/93 +# +# Given a vnode, follow its mount pointers +define vchain + + set $num = 0 + + set $vp=(struct vnode *)$arg0 + while ($vp) + printf "vp: 0x%x freef: 0x%x usecount: %d flags: 0x%x\n", $vp, $vp->v_freef, $vp->v_usecount, $vp->v_flag + set $num++ + set $vp = $vp->v_mountf + end + printf "Number of vnodes: %d\n", $num +end + +define vprint + set $vp=(struct vnode *)$arg0 + set $ip=(struct inode *)$vp->v_data +end + +define vall + set $mp=rootfs + while ($mp) + vchain $mp->mnt_mounth + set $mp=$mp->mnt_next + end +end diff --git a/sys/gdbscripts/vdump b/sys/gdbscripts/vdump new file mode 100644 index 00000000000..41dd1b98dd6 --- /dev/null +++ b/sys/gdbscripts/vdump @@ -0,0 +1,12 @@ +# @(#)vdump 8.1 (Berkeley) 6/10/93 +# +# dump the vnode list + +define dumpvnodes + + set $vp = (struct vnode *)$arg0 + while ($vp) + printf "vnode=0x%x freef=0x%x mountf=0x%x usecount=%d\n", $vp, $vp->v_freef, $vp->v_mountf, $vp->v_usecount + set $vp = (struct vnode *)$vp->v_freef + end +end diff --git a/sys/gdbscripts/xps b/sys/gdbscripts/xps new file mode 100644 index 00000000000..a4915dec9ff --- /dev/null +++ b/sys/gdbscripts/xps @@ -0,0 +1,32 @@ +# xps +# kernel ps +# +# @(#)xps 8.3 (Berkeley) 8/22/94 + +define xps + + set $i = 0 + + while ($i < 2) + + if ($i == 0) + set $p = allproc.lh_first + end + if ($i == 1) + set $p = zombproc.lh_first + end + + printf " proc pid flag st wchan comm\n" + while ($p) + printf "%#10x %5d %8x %2x %#10x %s", $p, $p->p_pid, \ + $p->p_flag, $p->p_stat, $p->p_wchan, \ + (char *) $p->p_comm + if ($p->p_wmesg) + printf " (%s)", $p->p_wmesg + end + printf "\n" + set $p = $p->p_list.le_next + end + set $i++ + end +end |
