diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
| commit | 6d8bdc65446a704d0750217efd05532fc641ea7d (patch) | |
| tree | 8ae6d698b3c9801750a8b117b3842fb369872a3a /static/openbsd/man4/ddb.4 | |
| parent | 2f467bd7ff8f8db0dafa40426166491d7f57f368 (diff) | |
docs: OpenBSD Man Pages Added
Diffstat (limited to 'static/openbsd/man4/ddb.4')
| -rw-r--r-- | static/openbsd/man4/ddb.4 | 1303 |
1 files changed, 1303 insertions, 0 deletions
diff --git a/static/openbsd/man4/ddb.4 b/static/openbsd/man4/ddb.4 new file mode 100644 index 00000000..9097506e --- /dev/null +++ b/static/openbsd/man4/ddb.4 @@ -0,0 +1,1303 @@ +.\" $OpenBSD: ddb.4,v 1.111 2026/02/02 15:21:28 claudio Exp $ +.\" $NetBSD: ddb.4,v 1.5 1994/11/30 16:22:09 jtc Exp $ +.\" +.\" Mach Operating System +.\" Copyright (c) 1991,1990 Carnegie Mellon University +.\" All Rights Reserved. +.\" +.\" Permission to use, copy, modify and distribute this software and its +.\" documentation is hereby granted, provided that both the copyright +.\" notice and this permission notice appear in all copies of the +.\" software, derivative works or modified versions, and any portions +.\" thereof, and that both notices appear in supporting documentation. +.\" +.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" +.\" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR +.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. +.\" +.\" Carnegie Mellon requests users of this software to return to +.\" +.\" Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU +.\" School of Computer Science +.\" Carnegie Mellon University +.\" Pittsburgh PA 15213-3890 +.\" +.\" any improvements or extensions that they make and grant Carnegie Mellon +.\" the rights to redistribute these changes. +.\" +.Dd $Mdocdate: February 2 2026 $ +.Dt DDB 4 +.Os +.Sh NAME +.Nm ddb +.Nd kernel debugger +.Sh DESCRIPTION +The +.Nm +debugger provides a means for debugging the kernel, +and analysing the kernel after a system crash ("panic"), with a +.Xr gdb 1 Ns \&-like +syntax. +.Pp +.Nm +is invoked upon a kernel panic when the +.Xr sysctl 8 +.Va ddb.panic +is set to 1. +It may be invoked from the console when the sysctl +.Va ddb.console +is set to 1, using any of the following methods: +.Bl -dash -offset 3n +.It +Using the key sequence +.Li Ctrl-Alt-Esc . +.It +Sending a +.Dv BREAK +when using a serial console. +.It +Writing to the sysctl +.Va ddb.trigger . +.It +For i386 and amd64 architectures, +using the key sequence +.Li Ctrl-Alt-Delete +when the sysctl +.Va machdep.kbdreset +is set to 2. +.El +.Pp +.Nm +prompts for commands on the console with: +.Pp +.Dl ddb> +.Pp +The general syntax of a +.Nm +command is: +.Bd -ragged -offset indent +.Ar command +.Oo Ic / Ns Ar modifiers Oc " " +.Oo Ar address Oc Ns +.Op Ic \&, Ns Ar count +.Ed +.Pp +To save typing, +.Nm +makes use of a context inferred from previous commands. +In this context, +the current location is called +.Va dot . +.\" The +.\" .Va dot +.\" is displayed with +.\" a hexadecimal format at a prompt. +The +.Ic examine , +.Ic search , +.Ic show struct , +and +.Ic write +commands update +.Va dot +to be that of the last address +examined or the last location modified, and +have intuitive effects on +.Va next +and +.Va prev . +All the other commands do not change +.Va dot , +and set +.Va next +to be the same. +(See +.Sx VARIABLES . ) +.Pp +.\" Specifying +.\" .Ar address +.\" in a command sets +.\" .Va dot . +An expression can be used in place of +.Ar address +(see +.Sx EXPRESSIONS ) . +Omitting +.Ar address +in a command uses the last value of +.Va dot . +A missing +.Ar count +is taken to be 1 for printing commands or \*(If +for stack traces. +Entering a blank line causes the last command to be repeated using +.Va next +in place of +.Ar address , +a +.Ar count +of 1, and no modifiers. +.Pp +.Nm +has a feature like +.Xr more 1 +for the output. +If the number of lines output in response to one command exceeds the number +set in the +.Va $lines +variable, it displays the message +.Ql "--db_more--" +and waits for a response. +.Pp +The valid responses are: +.Pp +.Bl -tag -width 10n -offset indent -compact +.It Aq Ic space +One more page. +.It Aq Ic return +One more line. +.It Ic q +Abort the current command, and return to the command input mode. +.El +.Pp +The following command line editing keys are provided: +.Pp +.Bl -tag -width 10n -offset indent -compact +.It Ic ^b +back one character +.It Ic ^f +forward one character +.It Ic ^a +beginning of line +.It Ic ^e +end of line +.It Ic ^w +erase word back +.It Ic ^h | Aq Ic del +erase previous character +.It Ic ^d +erase next character +.It Ic ^k +delete to end of line +.It Ic ^u +delete line +.It Ic ^p +previous in command history +.It Ic ^n +next in command history +.It Ic ^r +redraw line +.It Ic ^t +exchange the two characters to the left of the cursor +.El +.Sh COMMANDS +The following commands may be typed at the +.Ql ddb> +prompt. +Some commands consist of more than one word, and if only the first word +or words are entered, the possible alternatives to complete the command +are displayed and no other action is performed. +.Bl -tag -width 10n +.\" -------------------- +.It Ic help +List the available commands. +.\" -------------------- +.Tg examine +.It Xo +.Oo Ic e Oc Ns +.Ic x Ns Op Ic amine +.Op Cm /bhlqaAxzodurcsmiI +.Op Ar addr Ns +.Op Ic \&, Ns Ar count +.Xc +Display the contents at address +.Ar addr +according to the formats in the modifier. +If no format is specified, the last formats specified for this command +are used. +.Pp +The format characters are: +.Pp +.Bl -tag -width 4n -compact +.It Cm /b +look at by bytes (8 bits) +.It Cm /h +look at by half words (16 bits) +.It Cm /l +look at by long words (32 bits) (default) +.It Cm /q +look at by long longs (64 bits) (only available on 64-bit platforms) +.It Cm /a +print the location being displayed +.It Cm /A +print the location with a line number if possible +.It Cm /x +display in unsigned hex +.It Cm /z +display in signed hex +.It Cm /o +display in unsigned octal +.It Cm /d +display in signed decimal +.It Cm /u +display in unsigned decimal +.It Cm /r +display in current radix, signed +.It Cm /c +display low 8 bits as a character. +Non-printing characters are displayed as an octal escape code (e.g., '\e000'). +.It Cm /s +display the null-terminated string at the location. +Non-printing characters are displayed as octal escapes. +.It Cm /m +display in unsigned hex with character dump at the end of each line. +The location is also displayed in hex at the beginning of each line. +.It Cm /i +display as an instruction +.It Cm /I +display as an alternate format instruction depending on the +machine: +.Pp +.Bl -tag -width powerpc_ -compact +.It alpha +Print affected register contents for every instruction. +.It amd64 , +.It i386 +Do not skip padding to the next long word boundary for unconditional jumps. +.It m88k +Decode instructions for the opposite CPU model (e.g. m88110 when running on an +m88100 processor). +.El +.El +.Pp +The value of +.Va next +is set to the +.Ar addr +plus the size of the data examined. +.\" -------------------- +.Tg print +.It Xo +.Ic p Ns Op Ic rint +.Op Cm /axzodurc +.Op Ar addr +.Xc +Print +.Ar addr +according to the modifier character. +The valid modifiers are a subset of those from the +.Ic examine +command, and act as described there. +If no modifier is specified, the last one specified in a +previous use of +.Ic print +is used. +.Pp +For example, +.Bd -literal -offset indent +print/x $eax +.Ed +.Pp +will print something like this: +.Bd -literal -offset indent +xxxxxx +.Ed +.\" -------------------- +.Tg pprint +.It Xo +.Ic pp Ns Op Ic rint +.Op Ar addr +.Xc +Pretty-print +.Ar addr +using CTF debug symbols included in the kernel binary image. +The CTF section is normally added by running +.Xr ctfstrip 1 +as part of building a new kernel. +.\" -------------------- +.\" .It Xo Ic w Ns Op Cm /bhl +.\" .Op Ar addr +.\" .Ar expr Op expr ... +.\" .Xc +.Tg write +.It Xo +.Ic w Ns Op Ic rite +.Op Cm /bhl +.Op Ar addr +.Ar expr Op Ar expr ... +.Xc +Write the value of each +.Ar expr +expression at succeeding locations start at +.Ar addr . +The write unit size can be specified using one of the modifiers: +.Pp +.Bl -tag -width 4n -offset indent -compact +.It Cm /b +byte (8 bits) +.It Cm /h +half word (16 bits) +.It Cm /l +long word (32 bits) (default) +.El +.Pp +The value of +.Va next +is set to +.Ar addr +plus the size of values written. +.Pp +.Sy Warning : +since there is no delimiter between expressions, the +command may not parse as you expect. +It is best to enclose each expression in parentheses. +.\" -------------------- +.It Xo Ic set +.Ic $ Ns Ar name +.Op Ic = +.Ar expr +.Xc +Set the named variable or register with the value of +.Ar expr . +For valid variable names, +see +.Sx VARIABLES . +.\" -------------------- +.It Ic boot Ar how +Reboot the machine depending on +.Ar how : +.Pp +.Bl -tag -width "boot poweroff" -compact +.It Ic boot sync +Sync disks and reboot. +.It Ic boot crash +Dump core and reboot. +.It Ic boot dump +Sync disks, dump core and reboot. +.It Ic boot halt +Just halt. +.It Ic boot reboot +Just reboot. +.It Ic boot poweroff +Power down the machine whenever possible; if it fails, just halt. +.El +.\" -------------------- +.It Xo +.Ic break +.Op Ar addr Ns +.Op Ic \&, Ns Ar count +.Xc +Set a break point at +.Ar addr . +If +.Ar count +is supplied, +.Nm +allows the breakpoint to be silently hit +.Ar ( count No \- 1 ) +times before stopping at the +break point. +.\" -------------------- +.Tg delete +.It Xo +.Ic d Ns Op Ic elete +.Op Ar addr +.Xc +Delete the break point set with the +.Ic break +command. +.\" -------------------- +.\" .It Xo Ic s Ns Op Cm /p +.\" .Op Ic \&, Ns Ar count +.\" .Xc +.Tg step +.It Xo +.Ic s Ns Op Ic tep +.Op Cm /p +.Op Ic \&, Ns Ar count +.Xc +Single step +.Ar count +times. +If the +.Cm /p +modifier is specified, print each instruction at each step. +Otherwise, only print the last instruction. +.Pp +.Sy Warning : +depending on machine type, it may not be possible to +single-step through some low-level code paths. +On machines with software-emulated single-stepping (e.g., alpha), +stepping through code executed by interrupt handlers will probably +do the wrong thing. +.\" -------------------- +.It Ic call Ar name Ns Xo +.Ic \&( Ns Ar expr +.Op Ic \&, Ar expr ... +.Ic \&) +.Xc +Call the function named by +.Ar name +with the argument(s) listed in parentheses. +Parentheses may be omitted if the function takes no arguments. +The number of arguments is currently limited to 10. +.\" -------------------- +.\" .It Ic c Ns Op Cm /c +.Tg continue +.It Xo +.Ic c Ns Op Ic ontinue +.Op Cm /c +.Xc +Continue execution until a breakpoint or watchpoint. +If the +.Cm /c +modifier is given, instructions are counted while executing. +.Pp +.Sy Warning : +when counting with +.Cm /c , +.Nm +is really silently single-stepping. +This means that single-stepping on low-level code may cause strange +behavior. +.\" -------------------- +.It Xo +.Ic watch +.Ar addr +.Op Ic \&, Ns Ar size +.Xc +Set a watchpoint for the region starting at +.Ar addr . +Execution stops and control returns to +.Nm +when an attempt is made to modify a watched region. +The +.Ar size +argument defaults to 4. +.Pp +If you specify a wrong space address, the request is rejected +with an error message. +.Pp +.Sy Warning : +attempts to watch wired kernel memory +may cause an unrecoverable error on some systems (e.g., i386). +.\" -------------------- +.It Ic dwatch Ar addr +Delete the watchpoint at address +.Ar addr +that was previously set with a +.Ic watch +command. +.\" -------------------- +.It Xo +.Ic hangman +.Op Cm /s Ns Op Ic 0-9 +.Xc +This is a tiny and handy tool for random kernel hangs analysis, of which its +depth is controlled by the optional argument of the default value of five. +It uses some sophisticated heuristics to spot the global symbol that +caused the hang. +Since the discovering algorithm is a probabilistic one, +you may spend substantial time to figure the exact symbol name. +This smart thing requires a little of your attention, the input it accepts +is mostly of the same format as that of the famous +.Xr hangman 6 +game, to which it, apparently, is obliged by the name. +Hint: the +.Xr nm 1 +utility might help. +.\" -------------------- +.It Ic until Op Cm /p +Stop at the next +.Qq call +or +.Qq return +instruction. +If the +.Cm /p +modifier is specified, +.Nm +prints the call nesting depth and the +cumulative instruction count at each call or return. +Otherwise, it stays silent until the matching return is hit. +.\" -------------------- +.It Ic match Op Cm /p +Stop at the next matching return instruction. +If the +.Cm /p +modifier is specified, +.Nm +prints the call nesting depth and the +cumulative instruction count at each call or return. +Otherwise, it remains mostly quiet. +.\" -------------------- +.It Ic next Op Cm /p +The +.Ic next +command is a synonym for +.Ic match . +.\" -------------------- +.It Ic kill Ar pid +Send an uncatchable +.Dv SIGABRT +signal to the process specified by the +.Ar pid +argument. +.\" -------------------- +.It Ic stop Ar pid +Send a +.Dv SIGSTOP +signal to the process specified by the +.Ar pid +argument. +.\" -------------------- +.It Xo +.Ic trace +.Op Cm /tu +.Op Ar frameaddr Ns +.Op Ic \&, Ns Ar count +.Xc +Show the stack trace. +The +.Cm /t +modifier interprets the +.Ar frameaddr +argument as the TID of a process and shows the stack trace of +that process. +.Ar frameaddr +is subject to the radix; use the 0t prefix to enter a decimal TID. +The +.Cm /t +modifier is not supported on all platforms. +The +.Cm /u +modifier shows the stack trace of user space; +if omitted, the kernel stack is traced instead. +The +.Ar count +argument is the limit on the number of frames to be followed. +If +.Ar count +is omitted, all frames are printed. +.Pp +.Sy Warning : +user space stack trace is valid +only if the machine dependent code supports it. +.\" -------------------- +.It Xo +.Ic search +.Op Cm /bhl +.Op Ar addr +.Ar value +.Op Ar mask +.Op Ic \&, Ns Ar count +.Xc +Search memory for a value beginning at +.Ar addr . +This command might fail in interesting +ways if it doesn't find the searched-for value. +This is because +.Nm +doesn't always recover from touching bad memory. +The optional +.Ar count +argument limits the search. +The modifiers are the same as those of the +.Ic write +command. +.Pp +The +.Va next +address is set to the address where +.Ar value +is found, or just after where the search area finishes. +.\" -------------------- +.It Ic reboot +Shortcut for +.Ic boot reboot +.\" -------------------- +.It Ic show Ar what +Displays various things, depending on +.Ar what : +.Bl -tag -width 4n +.\" -------------------- +.It Ic show bcstats +Prints the buffer cache statistics. +.\" -------------------- +.It Ic show breaks +Prints a list of all breakpoints that have been set with the +.Ic break +command. +.\" -------------------- +.It Ic show buf Ar addr +Prints the +.Vt struct buf +at +.Ar addr . +.\" -------------------- +.It Ic show extents +Prints a detailed list of all extents. +.\" -------------------- +.It Ic show locks Op Ar addr +Prints the list of locks held by a thread. +If an optional address is not specified, +.Li curproc +is assumed. +The +.Cm option WITNESS +is required for this command to be available. +.\" -------------------- +.It Ic show malloc Op Ar addr +Prints malloc debugging information if available. +If an optional address is specified, only information about that address +is printed. +.\" -------------------- +.It Xo +.Ic show map +.Op Cm /f +.Ar addr +.Xc +Prints the +.Li vm_map +at +.Ar addr . +If the +.Cm /f +modifier is specified, the complete map is printed. +.\" -------------------- +.It Xo +.Ic show mbuf +.Op Cm /cp +.Ar addr +.Xc +Prints the +.Vt struct mbuf +header at +.Ar addr . +Depending on the mbuf flags +.Vt struct pkthdr +and +.Vt struct m_ext +are printed as well. +If the +.Cm /c +modifier is specified, print the mbuf chain linked with the m_next +pointer. +.Cm /p +does the same using m_nextpkt. +Both can be combined. +.\" -------------------- +.It Xo +.Ic show mount +.Op Cm /f +.Ar addr +.Xc +Prints the +.Vt struct mount +at +.Ar addr . +If the +.Cm /f +modifier is specified, prints out all +.Li vnodes +(see also +.Cm show vnode ) +and also all +.Li bufs +(see also +.Cm show buf ) +on all those vnodes. +.\" -------------------- +.It Xo +.Ic show nfsnode +.Op Cm /f +.Ar addr +.Xc +Prints the +.Vt struct nfsnode +at +.Ar addr . +If the +.Cm /f +modifier is specified, prints out additional +information as well. +.\" -------------------- +.It Xo +.Ic show nfsreq +.Op Cm /f +.Ar addr +.Xc +Prints the +.Vt struct nfsreq +at +.Ar addr . +If the +.Cm /f +modifier is specified, prints out additional +information as well. +.\" -------------------- +.It Xo +.Ic show object +.Op Cm /f +.Ar addr +.Xc +Prints the +.Li vm_object +at +.Ar addr . +If the +.Cm /f +modifier is specified, the complete object is printed. +.\" -------------------- +.It Xo +.Ic show page +.Op Cm /f +.Ar addr +.Xc +Prints the +.Li vm_page +at +.Ar addr . +If the +.Cm /f +modifier is specified, the complete page is printed. +.\" -------------------- +.It Ic show panic +Prints the panic string. +.\" -------------------- +.It Xo +.Ic show pool +.Op Cm /p +.Ar addr +.Xc +Prints the +.Li pool +at +.Ar addr . +Valid modifiers: +.Bl -tag -width xxx -compact +.It Cm /p +Print the pagelist for this pool. +.El +.\" -------------------- +.It Xo +.Ic show proc +.Op Cm /t +.Op Ar addr +.Xc +Prints the +.Vt struct proc +at +.Ar addr . +If an optional address is not specified, +.Li curproc +is assumed. +The +.Cm /t +modifier interprets the +.Ar addr +argument as the TID of a proc. +.\" -------------------- +.It Ic show registers Op Cm /u +Display the register set. +If the +.Cm /u +modifier is specified, it displays user registers (or the currently +saved registers) instead of the kernel's. +Note: The +.Cm /u +modifier is not supported on every machine, in which case +incorrect information may be displayed. +.\" -------------------- +.It Ic show route Ar addr +Prints the +.Vt struct rtentry +at +.Ar addr . +.\" -------------------- +.It Ic show socket Ar addr +Prints the +.Vt struct socket +at +.Ar addr . +If the socket is spliced, the +.Vt struct sosplice +associated with the socket is printed as well. +.\" -------------------- +.It Xo +.Ic show struct +.Ar name +.Op addr +.Xc +Prints the content of the memory at +.Ar addr +as a struct +.Ar name . +Nested structures and bit fields are not printed. +Character arrays are printed as bytes. +.\" -------------------- +.It Ic show swap +Prints a detailed list of all swaps. +.\" -------------------- +.It Xo +.Ic show tdb +.Op Cm /f +.Ar addr +.Xc +Prints the +.Vt struct tdb +at +.Ar addr . +If the +.Cm /f +modifier is specified, prints out all fields of this IPsec SA. +.\" -------------------- +.It Ic show uvmexp +Displays a selection of uvm counters and statistics. +.\" -------------------- +.It Xo +.Ic show vnode +.Op Cm /f +.Ar addr +.Xc +Prints the +.Vt struct vnode +at +.Ar addr . +If the +.Cm /f +modifier is specified, prints out all +.Li bufs +(see also +.Cm show buf ) +currently attached to this +.Li vnode . +.\" -------------------- +.It Ic show watches +Displays all watchpoints set with the +.Ic watch +command. +.\" -------------------- +.It Ic show witness Op Cm /b +Prints the current order list. +If the +.Cm /b +modifier is specified, the list of found lock order violations is printed +instead. +The +.Cm option WITNESS +is required for this command to be available. +.\" -------------------- +.It Ic show all procs Op Cm /anow +Display information on all processes. +.Pp +.Bl -tag -width foo -compact +.It Cm /n +(Default) Show process information in a +.Xr ps 1 Ns \&-like +format. +Information printed includes process ID, thread ID, parent +process ID, UID, process status, process flags, process +wait channel message and process command name. +.It Cm /a +Shows the kernel virtual addresses of each process' +proc structure, u-area, and vmspace structure. +The vmspace address is also the address of the process' +.Li vm_map +structure +and can be used in the +.Ic show map +command. +.It Cm /o +Shows non-idle threads that were on CPU when ddb was entered. +Information printed includes thread ID, process ID, UID, process flags, +thread flags, current CPU, and command name. +.It Cm /w +Shows each thread's ID, command, process group, +wait channel address, and wait channel message. +.El +.\" -------------------- +.It Ic show all bufs Op Cm /f +Display information about all buffers in the system. +.Pp +.Bl -tag -width foo -compact +.It Cm /f +For each buffer, print a more detailed output. +See the +.Ic show buf +command for more information. +.El +.\" -------------------- +.It Ic show all callout +Display the contents of the callout table. +.\" -------------------- +.It Ic show all pools Op Cm /a +Display information about all system pools in a format similar to +.Xr vmstat 8 . +.Pp +.Bl -tag -width foo -compact +.It Cm /a +Displays +.Dq interesting +address information. +.El +.\" -------------------- +.It Ic show all locks +Prints the list of locks held by all threads in the system. +The +.Cm option WITNESS +is required for this command to be available. +.\" -------------------- +.It Ic show all mounts Op Cm /f +Display information on all mounted filesystems. +.Pp +.Bl -tag -width foo -compact +.It Cm /f +For each filesystem, list all its struct vnode addresses. +These addresses can be used in the +.Ic show vnode +command. +.El +.\" -------------------- +.It Ic show all nfsnodes Op Cm /f +Display information about all nfsnodes in the system. +.Pp +.Bl -tag -width foo -compact +.It Cm /f +For each nfsnode, print a more detailed output. +See the +.Ic show nfsnode +command for more information. +.El +.\" -------------------- +.It Ic show all nfsreqs Op Cm /f +Display information for all outstanding NFS requests. +.Pp +.Bl -tag -width foo -compact +.It Cm /f +For each NFS requests, print a more detailed output. +See the +.Ic show nfsreq +command for more information. +.El +.\" -------------------- +.It Xo +.Ic show all routes +.Op Cm /iI +.Op Ar rtableid +.Op Ic \&, Ns Ar count +.Xc +Show internet routing tables. +Default for +.Ar rtableid +is 0 and +.Ar count +is 1. +.Pp +.Bl -tag -width foo -compact +.It Cm /i +Restrict to AF_INET. +.It Cm /I +Restrict to AF_INET6. +.El +.\" -------------------- +.It Ic show all tdbs Op Cm /f +Display information about all IPsec SAs in the system. +.Pp +.Bl -tag -width foo -compact +.It Cm /f +For each tdb, print a more detailed output. +See the +.Ic show tdb +command for more information. +.El +.\" -------------------- +.It Ic show all vnodes Op Cm /f +Display information about all vnodes in the system. +.Pp +.Bl -tag -width foo -compact +.It Cm /f +For each vnode, print a more detailed output. +See the +.Ic show vnode +command for more information. +.El +.El +.\" -------------------- +.It Ic callout +A synonym for the +.Ic show all callout +command. +.\" -------------------- +.It Ic ps Op Cm /anow +A synonym for +.Ic show all procs . +.\" -------------------- +.Tg machine +.It Xo +.Ic mac Ns Op Ic hine +.Ar subcommand Op Ar arg ... +.Xc +Perform a platform-specific command. +.Pp +The following commands are supported by multiprocessor kernels on +these platforms: amd64, i386, macppc, mips64, and sparc64. +.Pp +.Bl -tag -width "searchframe [addr]" -compact +.It Ic cpuinfo +Display the state of each CPU. +.It Ic ddbcpu Ar N +Stop the current CPU and start handling +.Nm +on the selected CPU. +.It Ic startcpu Op Ar N +Resume normal processing on the selected CPU, +or all CPUs if none is specified. +.It Ic stopcpu Op Ar N +Stop normal processing on the selected CPU, +or all CPUs (except the one handling +.Nm ) +if none is specified. +.El +.Pp +Other platform-specific commands: +.\" .Pp +.\" amd64: +.Pp +arm: +.Bl -tag -width "searchframe [addr]" -compact +.It Ic frame Ar addr +Display the trapframe at +.Ar addr . +.El +.Pp +i386: +.Bl -tag -width "searchframe [addr]" -compact +.\" .It Ic acpi disasm Ar ?? +.\" .It Ic acpi showval Ar ?? +.\" .It Ic acpi tree Ar ?? +.\" .It Ic acpi trace Ar ?? +.\" Evil ACPI debugging magic. +.It Ic sysregs +Display the contents of the privileged registers: +.Va IDTR , +.Va GDTR , +.Va LDTR , +.Va TR , +.Va CR0 , +.Va CR2 , +.Va CR3 , +and +.Va CR4 . +.\" (i386-only) +.El +.Pp +m88k: +.Bl -tag -width "searchframe [addr]" -compact +.It Ic ddbcpu Ar N +Stop the current CPU and start handling +.Nm +on the selected CPU. +.It Ic frame Ar addr +Display the trapframe at +.Ar addr . +.It Ic regs +Display the registers from when +.Nm +was entered. +.It Ic searchframe Op Ar addr +Search for and display stack exception frames, +starting from +.Ar addr +if given, else the address in register +.Va r31 , +and stopping at the next 8k boundary. +.It Ic where +Display where the current CPU was stopped. +.El +.Pp +mips64: +.Bl -tag -width "searchframe [addr]" -compact +.It Xo +.Ic tlb Op Cm /p Ar asid +.Op Cm /c +.Op Ar tlb +.Xc +.It Ic trap Ar ?? +.El +.Pp +sh: +.Bl -tag -width "searchframe [addr]" -compact +.It Ic cache Op Ar addr +Display the cache, starting from +.Ar addr , +defaulting to 0. +.It Ic frame +Display the switch and trap frames. +.\" .It Ic stack +.It Ic tlb +Display the TLB. +.El +.Pp +sparc64: +.Bl -tag -width "searchframe [addr]" -compact +.It Ic ctx +Display the context addresses for all threads. +.\" .It Ic dtlb Ar 0,2 +.\" .It Ic dtsb +.\" .It Ic esp +.\" .It Ic fpstate Op Ar addr +.\" .It Ic itlb Ar 0,1,2 +.\" .It Ic kmap Op Ar addr +.\" .It Ic pcb Op Ar addr +.\" .It Ic pctx Ar pid +.\" .It Ic page Ar addr +.\" .It Ic phys Op Ar addr +.\" .It Ic pmap Op Ar addr +.\" .It Ic proc Op Ar addr +.\" .It Ic prom Ar ?? +.\" .It Ic pv Ar addr +.\" .It Ic stack Op Ar addr +.\" .It Ic tf Op Ar addr +.\" .It Ic ts +.\" .It Ic traptrace Op Ar addr +.\" .It Ic watch Op Ar addr +.\" .It Ic window Op Ar winnum +.\" .It Ic xir Op Ar addr +.El +.\" -------------------- +.El +.Sh VARIABLES +.Nm +denotes registers and variables by +.Ic $ Ns Va name . +Register names can be found with the +.Ic show registers +command. +.Pp +Built-in debugger variables currently supported are: +.Bl -tag -width 10n -compact -offset indent +.It Va $radix +Input and output radix. +.It Va $maxoff +Addresses are printed as +.Ar symbol Ns Li + Ns Ar offset +unless +.Ar offset +is greater than +.Va $maxoff . +.It Va $maxwidth +The width of the displayed lines. +.It Va $lines +The number of lines to page. +This is used by the +.Dq more +feature. +.It Va $tabstops +Tab stop width. +.It Va $log +Controls whether the output of +.Nm +will also appear in the system message +buffer. +.El +.Pp +These variables can also be controlled outside +.Nm +via the +.Sq ddb +.Xr sysctl 8 +hierarchy. +.Sh EXPRESSIONS +Almost all expression operators in C are supported except for +.Ql ~ , +.Ql ^ , +and unary +.Ql & . +Special rules for expressions in +.Nm +are: +.Bl -tag -width 15n -compact -offset indent +.It Ar identifier +The name of a symbol. +It is translated to the address (or value) of the symbol. +.Ql \&. +and +.Ql \&: +can be used in the identifier. +The following can be accepted as an identifier, +if supported by an object format dependent routine: +.Bl -item -offset indent -compact +.It +.Sm off +.Oo Ar filename Li \&: Oc Ar func +.Op \&: Ar linenumber +.It +.Op Ar filename \&: +.Ar variable +.It +.Ar filename +.Op \&: Ar linenumber +.Sm on +.El +The symbol may be prefixed with +.Sq Ar symboltablename Ns :: +(e.g., +.Ql emulator::mach_msg_trap ) +to specify other than kernel symbols. +.It Ar number +The radix is determined by the first two letters: +.Ql 0x : +hex, +.Ql 0o : +octal, +.Ql 0t : +decimal, otherwise, the value of +.Va $radix +is used. +.It Li \&. +.Va dot : +the current address. +.It Li + +.Va next : +the next address. +.It Li .. +The address of the start of the last line examined. +Unlike +.Va dot +or +.Va next , +this is only changed by the +.Ic examine +or +.Ic write +command. +.It Li ' +The last address explicitly specified. +.It Li $ Ns Ar variable +The value of a register or variable. +.It Ar expr Li # Ar expr +A binary operator which rounds up the left hand side to the next +multiple of right hand side. +.It Li * Ns Ar expr +Indirection. +It may be followed by a ':' as described above with +.Ar identifier . +.El +.Sh SEE ALSO +.Xr ctfstrip 1 , +.Xr gdb 1 , +.Xr nm 1 , +.Xr witness 4 , +.Xr sysctl.conf 5 , +.Xr hangman 6 , +.Xr crash 8 , +.Xr sysctl 8 , +.Xr extent 9 , +.Xr pool 9 , +.Xr uvm_init 9 +.Sh HISTORY +This kernel facility first appeared in the Mach 3.0 operating system +developed by CMU. +Hangman (which stands for "hangs maniacal analyzer") first appeared in +.Ox 1.2 . |
