xref: /dragonfly/share/misc/gdbinit (revision 92fc8b5c)
1#
2# Command file for the GNU Debugger, for kernel debugging.
3#
4# This file can either be put in your home directory as ~/.gdbinit,
5# or selected at run time as:
6#
7#   	'gdb -k -q -x /usr/share/misc/gdbinit ...'
8#
9set print union
10set history expansion on
11
12define pcomm
13	printf "%10s\n",$arg0->td_comm
14end
15
16define lsvfs
17	set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
18	printf "\nFilesystem      Refs    Flags\n"
19	while ($vfc != 0)
20		printf "%-10s %6d       0x%08x\n", $vfc->vfc_name, \
21			$vfc->vfc_refcount, $vfc->vfc_flags
22		set $vfc = $vfc->vfc_next.stqe_next
23	end
24end
25
26define lsmount
27	set $mnt = (mountlist->tqh_first)
28	while ($mnt != 0)
29		print *$mnt
30		set $mnt = $mnt->mnt_list->tqe_next
31	end
32end
33
34define lsvfsops
35	set $vfc = (struct vfsconf *)vfsconf_list.stqh_first
36	while ($vfc != 0)
37		printf "Filesystem: %s, Refs: %d, Flags: 0x%08x\n", \
38			$vfc->vfc_name, $vfc->vfc_refcount, $vfc->vfc_flags
39		printf "VFS ops: \n"
40		set print pretty
41		print *$vfc->vfc_vfsops
42		set print pretty off
43		set $vfc = $vfc->vfc_next.stqe_next
44	end
45end
46
47
48define kldstat
49	set $kld = linker_files.tqh_first
50	printf "\nId Refs Address    Size     Name\n"
51	while ($kld != 0)
52		printf "%2d %4d 0x%08x %-8x %s\n", \
53		$kld->id, $kld->refs, $kld->address, $kld->size, $kld->filename
54		set $kld = $kld->link.tqe_next
55	end
56end
57
58define psx
59    set $cpu = 0
60    printf "\ncpu  pid    thread    flags comm               wchan    wmesg\n"
61    while ($cpu < ncpus)
62	set $gd = &((struct privatespace *)&CPU_prvspace)[$cpu].mdglobaldata
63	set $td = $gd->mi.gd_tdallq.tqh_first
64	while ( $td != 0 )
65	    if ( $td->td_proc != 0 )
66		set $pid = $td->td_proc->p_pid
67	    else
68		set $pid = -1
69	    end
70	    if ( $td->td_wmesg != 0 )
71		printf "%3d %5d %08x %08x %-18s %08x %s\n",	\
72		    $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan, \
73		    $td->td_wmesg
74	    else
75		printf "%3d %5d %08x %08x %-18s %08x\n",	\
76		    $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan
77	    end
78	    set $td = $td->td_allq.tqe_next
79	end
80	set $cpu = $cpu + 1
81    end
82end
83
84
85define running_threads
86    set $icpu = 0
87	printf "\ncpu    curthread    wchan\n"
88	while ($icpu < ncpus)
89	    set $ipvspace = (struct privatespace *)&CPU_prvspace
90		set $gd = $ipvspace[$icpu].mdglobaldata.mi
91		set $td = $gd.gd_curthread
92	    printf "%d    %10s    %08x\n", \
93			$gd.gd_cpuid, $td->td_comm, $td->td_wchan
94	    set $icpu = $icpu + 1
95	end
96end
97
98define psax
99    set $proc = allproc->lh_first
100    while $proc != 0
101	printf "%p%6d%10s\n",$proc,$proc->p_pid,$proc->p_comm
102	set $proc = $proc->p_list.le_next
103    end
104end
105
106define _infotok
107	set $token = ($arg0)
108	set $tokref = $token->t_ref
109	if ($tokref != 0)
110		printf "%-15s 0x%08x %10d 0x%08x 0x%08x\n", $token->t_desc, \
111			$token->t_flags, $token->t_collisions, $tokref->tr_owner, \
112			$tokref->tr_stallpc
113	else
114		printf "%-15s 0x%08x %10d not held\n", $token->t_desc, \
115			$token->t_flags, $token->t_collisions
116	end
117end
118
119define infotok
120	printf "\nToken           flags      collisions owner      stallpc\n"
121	_infotok ($arg0)
122end
123
124define lstok
125	printf "\nToken           flags      collisions owner      stallpc\n"
126	_infotok &pmap_token
127	_infotok &dev_token
128	_infotok &vm_token
129	_infotok &vmspace_token
130	_infotok &kvm_token
131	_infotok &proc_token
132	_infotok &tty_token
133	_infotok &vnode_token
134	_infotok &vmobj_token
135end
136
137# Documentation, usable within GDB using the 'help' command.
138document lsvfs
139Output list of loaded file systems, refcount, similar to the
140lsvfs(1) utility.
141end
142
143document lsmount
144Iterate the current list of mount structures loaded from the
145memory core, there should be one per loaded VFS.
146end
147
148document lsvfsops
149Display the VFS operations vector for each file system found in
150the memory core, preceded by a summarised header.
151end
152
153document kldstat
154Output list of loaded kernel modules in kldstat(1) style.
155end
156
157document pcomm
158Print command name of the given thread pointer (first argument).
159end
160
161document psx
162Output a list of processes with wait-channel (wchan) informaiton.
163end
164
165document running_threads
166List the threads which are currently running and their CPU number.
167end
168
169document psax
170Output a list of processes.
171end
172
173document lstok
174Display all known global tokens and some information about them.
175end
176
177document infotok
178Takes one argument, a struct lwkt_token * (pointer) and prints some
179information about that token.
180end
181