1 # $DragonFly: src/test/debug/gdb.kernel,v 1.4 2005/07/28 15:48:56 hmp Exp $
3 # Command file for the GNU Debugger, for kernel debugging.
5 # This file can either be put in your home directory as ~/.gdbinit,
6 # or selected at run time as:
8 # 'gdb -k -q -x /usr/src/test/debug/gdb.kernel ...'
10 # Here is a list of macros and short one-line descriptions:
12 # kldstat - kldstat(1) command style output of loaded modules
13 # pcomm - print command name of arg0's (thread's) process pointer
14 # psx - process listing with wchan information
15 # running_threads - the current running thread on each CPU.
18 set history expansion on
21 printf "%10s\n",$arg0->td_comm
25 set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
26 printf "\nFilesystem Refs Flags\n"
28 printf "%-10s %6d 0x%08x\n", $vfc->vfc_name, \
29 $vfc->vfc_refcount, $vfc->vfc_flags
30 set $vfc = $vfc->vfc_next.stqe_next
35 set $mnt = (mountlist->tqh_first)
38 set $mnt = $mnt->mnt_list->tqe_next
43 set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
45 printf "Filesystem: %s, Refs: %d, Flags: 0x%08x\n", \
46 $vfc->vfc_name, $vfc->vfc_refcount, $vfc->vfc_flags
49 print *$vfc->vfc_vfsops
51 set $vfc = $vfc->vfc_next.stqe_next
57 set $kld = linker_files.tqh_first
58 printf "\nId Refs Address Size Name\n"
60 printf "%2d %4d 0x%08x %-8x %s\n", \
61 $kld->id, $kld->refs, $kld->address, $kld->size, $kld->filename
62 set $kld = $kld->link.tqe_next
68 printf "\ncpu pid thread flags comm wchan wmesg\n"
70 set $gd = &((struct privatespace *)&CPU_prvspace)[$cpu].mdglobaldata
71 set $td = $gd->mi.gd_tdallq.tqh_first
73 if ( $td->td_proc != 0 )
74 set $pid = $td->td_proc->p_pid
78 if ( $td->td_wmesg != 0 )
79 printf "%3d %5d %08x %08x %-18s %08x %s\n", \
80 $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan, \
83 printf "%3d %5d %08x %08x %-18s %08x\n", \
84 $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan
86 set $td = $td->td_allq.tqe_next
93 define running_threads
95 printf "\ncpu curthread wchan\n"
97 set $ipvspace = (struct privatespace *)&CPU_prvspace
98 set $gd = $ipvspace[$icpu].mdglobaldata.mi
99 set $td = $gd.gd_curthread
100 printf "%d %10s %08x\n", \
101 $gd.gd_cpuid, $td->td_comm, $td->td_wchan
102 set $icpu = $icpu + 1
107 set $proc = allproc->lh_first
109 printf "%p%6d%10s\n",$proc,$proc->p_pid,$proc->p_comm
110 set $proc = $proc->p_list.le_next
116 set $tokref = $token->t_ref
118 printf "%-15s 0x%08x %10d 0x%08x 0x%08x\n", $token->t_desc, \
119 $token->t_flags, $token->t_collisions, $tokref->tr_owner, \
122 printf "%-15s 0x%08x %10d not held\n", $token->t_desc, \
123 $token->t_flags, $token->t_collisions
128 printf "\nToken flags collisions owner stallpc\n"
133 printf "\nToken flags collisions owner stallpc\n"
137 _infotok &vmspace_token
141 _infotok &vnode_token
142 _infotok &vmobj_token
145 # Documentation, usable within GDB using the 'help' command.
147 Output list of loaded file systems, refcount, similar to the
152 Iterate the current list of mount structures loaded from the
153 memory core, there should be one per loaded VFS.
157 Display the VFS operations vector for each file system found in
158 the memory core, preceded by a summarised header.
162 Output list of loaded kernel modules in kldstat(1) style.
166 Print command name of the given thread pointer (first argument).
170 Output a list of processes with wait-channel (wchan) informaiton.
173 document running_threads
174 List the threads which are currently running and their CPU number.
178 Output a list of processes.
182 Display all known global tokens and some information about them.
186 Takes one argument, a struct lwkt_token * (pointer) and prints some
187 information about that token.