summaryrefslogtreecommitdiff
path: root/sys/gdbscripts
diff options
context:
space:
mode:
authorgwr <gwr@NetBSD.org>1997-02-12 22:09:45 +0000
committergwr <gwr@NetBSD.org>1997-02-12 22:09:45 +0000
commit48faabf317999ce87848ffc09c14de2e88028e1d (patch)
tree5a2436472278c37f7dae9707dc6e2171701e5359 /sys/gdbscripts
parentb2d40fd746dfa414f5ed5293ca61757bae9ab5d9 (diff)
Macros for gdb when debugging the kernel (from 4.4-Lite2).
Diffstat (limited to 'sys/gdbscripts')
-rw-r--r--sys/gdbscripts/bdump103
-rw-r--r--sys/gdbscripts/kdump37
-rw-r--r--sys/gdbscripts/pgrpdump21
-rw-r--r--sys/gdbscripts/stats19
-rw-r--r--sys/gdbscripts/vchain28
-rw-r--r--sys/gdbscripts/vdump12
-rw-r--r--sys/gdbscripts/xps32
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