Add a debug directory under src/test, where we will house all of our debug
[dragonfly.git] / test / debug / gdb.kernel
1 # $DragonFly: src/test/debug/gdb.kernel,v 1.1 2004/06/26 13:09:52 hmp Exp $
2 #
3 # Command file for the GNU Debugger, for kernel debugging.
4 #
5 # This file can either be put in your home directory as ~/.gdbinit,
6 # or selected at run time as:
7 #
8 #       'gdb -k -q -x /usr/src/test/debug/gdb.kernel ...'
9 #
10 # Here is a list of macros and short one-line descriptions:
11 #
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 #
16 set print union
17 set history expansion on
18
19 define pcomm
20         printf "%10s\n",$arg0->td_comm
21 end
22
23 define kldstat
24         set $kld = linker_files.tqh_first
25         printf "Id Refs Address    Size     Name\n"
26         while ($kld != 0)
27                 printf "%2d %4d 0x%08x %-8x %s\n", \
28                 $kld->id, $kld->refs, $kld->address, $kld->size, $kld->filename
29                 set $kld = $kld->link.tqe_next
30         end
31 end
32
33 define psx 
34     set $cpu = 0
35     printf "cpu  pid    thread    flags comm       wchan wmesg\n"
36     while ($cpu < ncpus)
37         set $gd = &((struct privatespace *)&CPU_prvspace)[$cpu].mdglobaldata
38         set $td = $gd->mi.gd_tdallq.tqh_first
39         while ( $td != 0 )
40             if ( $td->td_proc != 0 )
41                 set $pid = $td->td_proc->p_pid
42             else
43                 set $pid = -1
44             end
45             if ( $td->td_wmesg != 0 )
46                 printf "%3d %5d %08x %08x %-10s %08x %s\n",     \
47                     $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan, \
48                     $td->td_wmesg
49             else
50                 printf "%3d %5d %08x %08x %-10s %08x\n",        \
51                     $cpu, $pid, $td, $td->td_flags, $td->td_comm, $td->td_wchan
52             end
53             set $td = $td->td_allq.tqe_next
54         end
55         set $cpu = $cpu + 1
56     end
57 end
58
59
60 define running_threads
61     set $icpu = 0
62         printf "cpu    curthread    wchan\n"
63         while ($icpu < ncpus)
64             set $ipvspace = (struct privatespace *)&CPU_prvspace
65                 set $gd = $ipvspace[$icpu].mdglobaldata.mi
66                 set $td = $gd.gd_curthread
67             printf "%d    %10s    %08x\n", \
68                         $gd.gd_cpuid, $td->td_comm, $td->td_wchan
69             set $icpu = $icpu + 1
70         end
71 end
72
73 # Documentation, usable within GDB using the 'help' command.
74 document kldstat
75 Output list of loaded kernel modules in kldstat(1) style.
76 end
77
78 document pcomm
79 Print command name of the given thread pointer (first argument).
80 end
81
82 document psx
83 Output a list of processes with wait-channel (wchan) informaiton.
84 end