xref: /netbsd-src/share/man/man4/ddb.4 (revision dc306354b0b29af51801a7632f1e95265a68cd81)
1.\"	$NetBSD: ddb.4,v 1.29 1999/01/08 13:23:56 msaitoh Exp $
2.\"
3.\" Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
4.\" All rights reserved.
5.\"
6.\" This code is derived from software contributed to The NetBSD Foundation
7.\" by Luke Mewburn
8.\"
9.\" Redistribution and use in source and binary forms, with or without
10.\" modification, are permitted provided that the following conditions
11.\" are met:
12.\" 1. Redistributions of source code must retain the above copyright
13.\"    notice, this list of conditions and the following disclaimer.
14.\" 2. Redistributions in binary form must reproduce the above copyright
15.\"    notice, this list of conditions and the following disclaimer in the
16.\"    documentation and/or other materials provided with the distribution.
17.\" 3. All advertising materials mentioning features or use of this software
18.\"    must display the following acknowledgement:
19.\"        This product includes software developed by the NetBSD
20.\"        Foundation, Inc. and its contributors.
21.\" 4. Neither the name of The NetBSD Foundation nor the names of its
22.\"    contributors may be used to endorse or promote products derived
23.\"    from this software without specific prior written permission.
24.\"
25.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
26.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
29.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35.\" POSSIBILITY OF SUCH DAMAGE.
36.\"
37.\" ---
38.\"	This manual page was derived from a -man.old document which bore
39.\"	the following copyright message:
40.\" ---
41.\"
42.\" Mach Operating System
43.\" Copyright (c) 1991,1990 Carnegie Mellon University
44.\" All Rights Reserved.
45.\"
46.\" Permission to use, copy, modify and distribute this software and its
47.\" documentation is hereby granted, provided that both the copyright
48.\" notice and this permission notice appear in all copies of the
49.\" software, derivative works or modified versions, and any portions
50.\" thereof, and that both notices appear in supporting documentation.
51.\"
52.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
53.\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
54.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
55.\"
56.\" Carnegie Mellon requests users of this software to return to
57.\"
58.\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
59.\"  School of Computer Science
60.\"  Carnegie Mellon University
61.\"  Pittsburgh PA 15213-3890
62.\"
63.\" any improvements or extensions that they make and grant Carnegie Mellon
64.\" the rights to redistribute these changes.
65.\"
66.Dd November 17, 1997
67.Dt DDB 4
68.Os NetBSD
69.Sh NAME
70.Nm ddb
71.Nd in-kernel debugger
72.Sh SYNOPSIS
73.Cd options DDB
74.Pp
75To enable history editing:
76.Cd options DDB_HISTORY_SIZE=integer
77.Pp
78To disable entering
79.Nm
80upon kernel panic:
81.Cd options DDB_ONPANIC=0
82.Sh DESCRIPTION
83.Nm
84is the in-kernel debugger.
85It may be entered at any time via a special key sequence, and
86optionally may be invoked when the kernel panics.
87.Sh ENTERING THE DEBUGGER
88Unless
89.Dv DDB_ONPANIC
90is set to 0,
91.Nm
92will be activated whenever the kernel would otherwise panic.
93.Pp
94.Nm
95may also be activated from the console.
96In general, sending a break on a serial console will activate
97.Nm "" .
98There are also key sequences for each port that will activate
99.Nm
100from the keyboard:
101.Bl -tag -offset indent -width "mvme68k"
102.It alpha
103<Ctrl>-<Alt>-<Esc> on PC style keyboards.
104.It amiga
105<LAlt>-<LAmiga>-<F10>
106.It atari
107<Alt>-<LeftShift>-<F9>
108.It hp300
109<Shift>-<Reset>
110.It i386
111<Ctrl>-<Alt>-<Esc>
112.It mac68k
113<Command>-<Power>, or the Interrupt switch.
114.It mvme68k
115Abort switch on CPU card.
116.It pmax
117<Do> on
118.Tn LK-201
119rcons console.
120.br
121<Break> on serial console.
122.It sparc
123<L1>-A, or <Stop>-A on a
124.Tn Sun
125keyboard.
126.br
127<Break> on serial console.
128.It sun3
129<L1>-A, or <Stop>-A on a
130.Tn Sun
131keyboard.
132.br
133<Break> on serial console.
134.It sun3x
135<L1>-A, or <Stop>-A on a
136.Tn Sun
137keyboard.
138.br
139<Break> on serial console.
140.It x68k
141Interrupt switch on the body.
142.El
143.Pp
144In addition,
145.Nm
146may be explicitly activated by the debugging code in the kernel
147if
148.Cm DDB
149is configured.
150.Sh COMMAND SYNTAX
151.Pp
152The general command syntax is:
153.Bd -ragged -offset indent
154.Ic command Ns Op Cm / Ns Ar modifier
155.Ar address
156.Op Cm , Ns Ar count
157.Ed
158.Pp
159The current memory location being edited is referred to as
160.Ar dot ,
161and the next location is
162.Ar next .
163They are displayed as hexadecimal numbers.
164.Pp
165Commands that examine and/or modify memory update
166.Ar dot
167to the address of the last line examined or the last location
168modified, and set
169.Ar next
170to the next location to be examined or modified.
171Other commands don't change
172.Ar dot ,
173and set
174.Ar next
175to be the same as
176.Ar dot .
177.Pp
178A blank line repeats the previous command from the address
179.Ar next
180with a
181.Cm count
182of 1 and no modifiers.
183Specifying
184.Cm address
185sets
186.Em dot
187to the address.
188If
189.Cm address
190is omitted,
191.Em dot
192is used.
193A missing
194.Cm count
195is taken to be 1 for printing commands, and infinity for stack traces.
196.Pp
197.Nm
198has a
199.Xr more 1 -like
200functionality; if a number of lines in a command's output exceeds the number
201defined in the
202.Va lines
203variable, then
204.Nm
205displays
206.Dq "--db more--"
207and waits for a response, which may be one of:
208.Bl -tag -offset indent -width "<return>"
209.It <return>
210one more line.
211.It <space>
212one more page.
213.It Ic q
214abort the current command, and return to the command input mode.
215.El
216.Pp
217If
218.Nm
219history editing is enabled (by defining the
220.D1 Cd options DDB_HISTORY_SIZE=num
221kernel option), then a history of the last
222.Cm num
223commands is kept.
224The history can be manipulated with the following key sequences:
225.Bl -tag -offset indent -width "<Ctrl>-P"
226.It <Ctrl>-P
227retrieve previous command in history (if any).
228.It <Ctrl>-N
229retrieve next command in history (if any).
230.El
231.Sh COMMANDS
232.Nm
233supports the following commands:
234.Bl -tag -width 5n
235.It Xo
236.Ic examine Ns Op Cm / Ns Ar modifier
237.Ar address Ns Op Cm , Ns Ar count
238.Xc
239Display the address locations according to the format in
240.Ar modifier .
241Multiple modifier formats display multiple locations.
242If
243.Ar modifier
244isn't specified, the modifier from the last use of
245.Ic examine
246is used.
247.Pp
248The valid format characters for
249.Ar modifier
250are:
251.Bl -tag -offset indent -width 2n
252.It Cm b
253examine bytes (8 bits).
254.It Cm h
255examine half-words (16 bits).
256.It Cm l
257examine long-words (32 bits).
258.It Cm a
259print the location being examined.
260.It Cm A
261print the location with a line number if possible.
262.It Cm x
263display in unsigned hex.
264.It Cm z
265display in signed hex.
266.It Cm o
267display in unsigned octal.
268.It Cm d
269display in signed decimal.
270.It Cm u
271display in unsigned decimal.
272.It Cm r
273display in current radix, signed.
274.It Cm c
275display low 8 bits as a character.
276Non-printing characters as displayed as an octal escape code
277(e.g.,
278.Sq \e000 ) .
279.It Cm s
280display the NUL terminated string at the location.
281Non-printing characters are displayed as octal escapes.
282.It Cm m
283display in unsigned hex with a character dump at the end of each line.
284The location is displayed as hex at the beginning of each line.
285.It Cm i
286display as a machine instruction.
287.It Cm I
288display as a machine instruction, with possible alternative formats
289depending upon the machine:
290.Bl -tag -offset indent -width "sparc"
291.It alpha
292print register operands
293.It m68k
294use Motorola syntax
295.It pc532
296print instruction bytes in hex
297.It vax
298don't assume that each external label is a procedure entry mask
299.El
300.El
301.It Xo
302.Ic x Ns Op Cm / Ns Ar modifier
303.Ar address Ns Op Cm , Ns Ar count
304.Xc
305A synonym for
306.Ic examine .
307.It Ic xf
308Examine forward.
309.Ic xf
310re-executes the most recent
311.Ic execute
312command with the same parameters except that
313.Ar address
314is set to
315.Ar next .
316.It Ic xb
317Examine backward.
318.Ic xb
319re-executes the most recent
320.Ic execute
321command with the same parameters, except that
322.Ar address
323is set to the last start address minus its size.
324.It Xo
325.Ic print Ns Op Cm /axzodurc
326.Ar address Op Ar address ...
327.Xc
328Print addresses
329.Ar address
330according to the modifier character, as per
331.Ic examine .
332Valid modifiers are:
333.Cm /a ,
334.Cm /x ,
335.Cm /z ,
336.Cm /o ,
337.Cm /d ,
338.Cm /u ,
339.Cm /r ,
340and
341.Cm /c
342(as per
343.Ic examine ) .
344If no modifier is specified, the most recent one specified is used.
345.Ar address
346may be a string, and is printed
347.Dq as-is .
348For example:
349.Bd -literal -offset indent
350print/x "eax = " $eax "\enecx = " $ecx "\en"
351.Ed
352.Pp
353will produce:
354.Bd -literal -offset indent
355eax = xxxxxx
356ecx = yyyyyy
357.Ed
358.It Xo
359.Ic write Ns Op Cm /bhl
360.Ar address
361.Ar expression Op Ar expression ...
362.Xc
363Write the
364.Ar expression Ns s
365at succeeding locations.
366The unit size is specified with a modifier character, as per
367.Ic examine .
368Valid modifiers are:
369.Cm /b ,
370.Cm /h ,
371and
372.Cm /l .
373If no modifier is specified,
374.Cm /l
375is used.
376.Pp
377Warning: since there is no delimiter between
378.Ar expression Ns s ,
379strange things may occur.
380It's best to enclose each
381.Ar expression
382in parentheses.
383.It Xo
384.Ic set
385.Cm $ Ns Ar variable
386.Op Cm =
387.Ar expression
388.Xc
389Set the named variable or register to the value of
390.Ar expression .
391Valid variable names are described in
392.Sx VARIABLES .
393.It Xo
394.Cm break Ns Op Cm /u
395.Ar address Ns Op Cm , Ns Ar count
396.Xc
397Set a breakpoint at
398.Ar address .
399If
400.Ar count
401is supplied, continues
402.Pq Ar count Ns -1
403times before stopping at the breakpoint.
404If the breakpoint is set, a breakpoint number is printed with
405.Sq # .
406This number can be used to
407.Ic delete
408the breakpoint, or to add
409conditions to it.
410.Pp
411If
412.Cm /u
413is specified,
414set a breakpoint at a user-space address.
415Without
416.Cm /u ,
417.Ar address
418is considered to be in the kernel-space, and an address in the wrong
419space will be rejected, and an error message will be emitted.
420This modifier may only be used if it is supported by machine dependent
421routines.
422.Pp
423Warning: if a user text is shadowed by a normal user-space debugger,
424user-space breakpoints may not work correctly.
425Setting a breakpoint at the low-level code paths may also cause
426strange behavior.
427.It Xo
428.Ic delete
429.Ar "address" |
430.Cm # Ns Ar number
431.Xc
432Delete a breakpoint.
433The target breakpoint may be specified by
434.Ar address ,
435as per
436.Ic break ,
437or by the breakpoint number returned by
438.Ic break
439if it's prefixed with
440.Sq Cm # .
441.It Xo
442.Ic step Ns Op Cm /p
443.Op Cm , Ns Ar count
444.Xc
445Single-step
446.Ar count
447times.
448If
449.Cm /p
450is specified, print each instruction at each step.
451Otherwise, only print the last instruction.
452.Pp
453Warning: depending on the machine type, it may not be possible
454to single-step through some low-level code paths or user-space
455code.
456On machines with software-emulated single-stepping (e.g., pmax),
457stepping through code executed by interrupt handlers will probably
458do the wrong thing.
459.It Ic continue Ns Op Cm /c
460Continue execution until a breakpoint or watchpoint.
461If
462.Cm /c
463is specified, count instructions while executing.
464Some machines (e.g., pmax) also count loads and stores.
465.Pp
466Warning: when counting, the debugger is really silently
467single-stepping.
468This means that single-stepping on low-level may cause strange
469behavior.
470.It Ic until Ns Op Cm /p
471Stop at the next call or return instruction.
472If
473.Cm /p
474is specified, print the call nesting depth and the
475cumulative instruction count at each call or return.
476Otherwise, only print when the matching return is hit.
477.It Ic next Ns Op Cm /p
478Stop at the matching return instruction.
479If
480.Cm /p
481is specified, print the call nesting depth and the
482cumulative instruction count at each call or return.
483Otherwise, only print when the matching return is hit.
484.It Ic match Ns Op Cm /p
485A synonym for
486.Ic next .
487.It Xo
488.Cm trace Ns Op Cm /u
489.Sm off
490.Op Ar frame-address
491.Op Cm , Ar count
492.Sm on
493.Xc
494Stack trace from
495.Ar frame-address .
496If
497.Cm /u
498is specified, trace user-space, otherwise trace kernel-space.
499.Ar count
500is the number of frames to be traced.
501If
502.Ar count
503is omitted, all frames are printed.
504.Pp
505Warning: user-space stack trace is valid only if the machine dependent
506code supports it.
507.It Xo
508.Cm trace/t
509.Sm off
510.Op Ar pid
511.Op Cm , Ar count
512.Sm on
513.Xc
514Stack trace by
515.Dq thread
516(process, on
517.Nx )
518rather than by stack frame address.
519Note that
520.Ar pid
521is interpreted using the current radix, whilst
522.Ic ps
523displays pids in decimal; prefix
524.Ar pid
525with
526.Sq 0t
527to force it to be interpreted as decimal.
528.Pp
529Warning: trace by pid is valid only if the machine dependent code
530supports it.
531.It Xo
532.Ic search Ns Op Cm /bhl
533.Ar address
534.Ar value
535.Op Ar mask
536.Op Cm , Ns Ar count
537.Xc
538Search memory from
539.Ar address
540for
541.Ar value .
542The unit size is specified with a modifier character, as per
543.Ic examine .
544Valid modifiers are:
545.Cm /b ,
546.Cm /h ,
547and
548.Cm /l .
549If no modifier is specified,
550.Cm /l
551is used.
552.Pp
553This command might fail in interesting ways if it doesn't find
554.Ar value .
555This is because
556.Nm
557doesn't always recover from touching bad memory.
558The optional
559.Ar count
560limits the search.
561.It Ic reboot Op Ar flags
562Reboot, using the optionally supplied boot
563.Ar flags .
564.Pp
565Note: Limitations of the command line interface preclude
566specification of a boot string.
567.It Xo
568.Sm off
569.Ic "show\ all\ procs"
570.Op Cm /a
571.Op Cm /n
572.Op Cm /w
573.Sm on
574.Xc
575Display all process information.
576Valid modifiers:
577.Bl -tag -width 3n
578.It Cm /n
579show process information in a
580.Xr ps 1
581style format (this is the default).
582Information printed includes: process ID, parent process ID,
583process group, UID, process status, process flags, process
584command name, and process wait channel message.
585.It Cm /a
586show the kernel virtual addresses of each process'
587proc structure, u-are, and vmspace structure.
588The vmspace address is also the address of the process'
589vm_map structure, and can be used in the
590.Ic "show map"
591command.
592.It Cm /w
593show each process' PID, command, system call emulation, wait channel
594address, and wait channel message.
595.El
596.It Xo
597.Sm off
598.Ic ps
599.Op Cm /a
600.Op Cm /n
601.Op Cm /w
602.Sm on
603.Xc
604A synonym for
605.Ic "show all procs" .
606.It Ic "show registers" Ns Op Cm /u
607Display the register set.
608If
609.Cm /u
610is specified, display user registers instead of kernel registers
611or the currently save one.
612.Pp
613Warning: support for
614.Cm /u
615is machine dependent.
616If not supported, incorrect information will be displayed.
617.It Xo
618.Ic "show map" Ns Op Cm /f
619.Ar address
620.Xc
621Print the vm_map at
622.Ar address .
623If
624.Cm /f
625is specified the complete map is printed.
626.It Xo
627.Ic "show object" Ns Op Cm /f
628.Ar address
629.Xc
630Print the vm_object at
631.Ar address .
632If
633.Cm /f
634is specified the complete object is printed.
635.It Ic "show watches"
636Display all watchpoints.
637.It Xo
638.Ic watch
639.Sm off
640.Ar address
641.Op Cm , Ar size
642.Sm on
643.Xc
644Set a watchpoint for a region.
645Execution stops when an attempt to modify the region occurs.
646.Ar size
647defaults to 4.
648.Pp
649If you specify a wrong space address, the request is
650rejected with an error message.
651.Pp
652Warning: attempts to watch wired kernel memory may cause
653an unrecoverable error in some systems such as i386.
654Watchpoints on user addresses work the best.
655.It Xo
656.Ic dwatch
657.Ar address
658.Xc
659Delete the watchpoint at
660.Ar address
661that was previously set with
662.Ic watch
663command.
664.It Xo
665.Ic kill
666.Ar pid Ns Op Cm , Ns Ar signal_number
667.Xc
668Send a signal to the process specified by the
669.Ar pid .
670If
671.Ar signal_number
672isn't specified, the SIGTERM signal is sent.
673.It Xo
674.Ic call
675.Sm off
676.Ar address
677.Oo
678.Cm ( Ar expression
679.Op Ar ,...
680.Cm )
681.Oc
682.Sm on
683.Xc
684Call the function specified by
685.Ar address
686with the argument(s) listed in parentheses.
687Parentheses may be omitted if the function takes no arguments.
688The number of arguments is currently limited to 10.
689.El
690.Sh MACHINE-SPECIFIC COMMANDS
691The "glue" code that hooks
692.Nm
693into the
694.Nx
695kernel for any given port can also add machine specific commands
696to the
697.Nm
698command parser.
699All of these commands are preceded by the command word
700.Em machine
701to indicate that they are part of the machine-specific command
702set (e.g.
703.Ic "machine reboot"
704).
705Some of these commands are:
706.Ss ALPHA
707.Bl -tag -width "intrchain"
708.It Ic halt
709Call the PROM monitor to halt the CPU.
710.It Ic reboot
711Call the PROM monitor to reboot the CPU.
712.El
713.Ss ARM32
714.Bl -tag -width "intrchain"
715.It Ic vmstat
716Equivalent to
717.Xr vmstat 8
718output with "-s" option (statistics).
719.It Ic vnode
720Print out a description of a vnode.
721.It Ic intrchain
722Print the list of IRQ handlers.
723.It Ic panic
724Print the current "panic" string.
725.It Ic frame
726Given a trap frame address, print out the trap frame.
727.El
728.Ss MIPS
729.Bl -tag -width "intrchain"
730.It Ic halt
731Call the PROM monitor to halt the CPU.
732.It Ic tlb
733Print out the Translation Lookaside Buffer (TLB).
734.It Ic trapdump
735Print out the Trap Log.
736Only works in
737.Nx
738kernels compiled with
739.Dv DEBUG
740option.
741.El
742.Ss SPARC
743.Bl -tag -width "intrchain"
744.It Ic prom
745Exit to the Sun PROM monitor.
746.El
747.Ss SUN3 and SUN3X
748.Bl -tag -width "intrchain"
749.It Ic abort
750Drop into monitor via abort (allows continue).
751.It Ic halt
752Exit to Sun PROM monitor as in
753.Xr halt 8 .
754.It Ic reboot
755Reboot the machine as in
756.Xr reboot 8 .
757.It Ic pgmap
758Given an address, print the address, segment map, page map, and
759Page Table Entry (PTE).
760.El
761.Sh VARIABLES
762.Nm
763accesses registers and variables as
764.Cm $ Ns Ar name .
765Register names are as per the
766.Ic "show registers"
767command.
768Some variables are suffixed with numbers, and may have a modifier
769following a colon immediately after the variable name.
770For example, register variables may have a
771.Sq u
772modifier to indicate user register
773(e.g.,
774.Li "$eax:u" ) .
775.Pp
776Built-in variables currently supported are:
777.Bl -tag -offset indent -width "maxwidth"
778.It Va lines
779The number of lines.
780This is used by the
781.Ic more
782feature.
783.It Va maxoff
784Addresses are printed as
785.Li 'symbol'+offset
786unless
787.Li offset
788is greater than
789.Va maxoff .
790.It Va maxwidth
791The width of the displayed line.
792.It Va onpanic
793If non-zero (the default),
794.Nm
795will be invoked when the kernel panics.
796If the kernel configuration option
797.D1 Cd options DDB_ONPANIC=0
798is used,
799.Va onpanic
800will be initialised to off.
801.It Va radix
802Input and output radix.
803.It Va tabstops
804Tab stop width.
805.It Va work Ns Sy xx
806Temporary work variable.
807.Sq Sy xx
808is between 0 and 31.
809.El
810.Pp
811All built-in variables are accessible via
812.Xr sysctl 3 .
813.Sh EXPRESSIONS
814Almost all expression operators in C are supported, except
815.Sq ~ ,
816.Sq ^ ,
817and unary
818.Sq & .
819Special rules in
820.Nm
821are:
822.Bl -tag -offset indent -width "identifier"
823.It Ar identifier
824name of a symbol.
825It is translated to the address (or value) of it.
826.Sq .
827and
828.Sq :
829can be used in the identifier.
830If supported by an object format dependent routine,
831.Sm off
832.Xo
833.Oo Ar filename : Oc
834.Ar function
835.Oo : Ar "line number" Oc ,
836.Xc
837.Xo
838.Oo Ar filename : Oc
839.Ar variable ,
840.Xc
841and
842.Xo
843.Ar filename
844.Oo : Ar "line number" Oc ,
845.Xc
846.Sm on
847can be accepted as a symbol.
848The symbol may be prefixed with
849.Ar "symbol_table_name" Ns ::
850(e.g.,
851.Li emulator::mach_msg_trap )
852to specify other than kernel symbols.
853.It Ar number
854number.
855Radix is determined by the first two characters:
856.Sq 0x
857- hex,
858.Sq 0o
859- octal,
860.Sq 0t
861- decimal,
862otherwise follow current radix.
863.It Cm .
864.Ar dot
865.It Cm +
866.Ar next
867.It Cm ..
868address of the start of the last line examined.
869Unlike
870.Ar dot
871or
872.Ar next ,
873this is only changed by the
874.Ic examine
875or
876.Ic write
877commands.
878.It Cm ,
879last address explicitly specified.
880.It Cm $ Ns Ar name
881register name or variable.
882It is translated to the value of it.
883It may be followed by a
884.Sq :
885and modifiers as described above.
886.It Cm a
887multiple of right-hand side.
888.It Cm * Ns Ar expr
889expression indirection.
890It may be followed by a
891.Sq :
892and modifiers as described above.
893.El
894
895.Sh HISTORY
896The
897.Nm
898kernel debugger was written as part of the MACH project at
899Carnegie-Mellon University.
900.Sh SEE ALSO
901.Xr options 4 ,
902.Xr sysctl 8
903