No empty .Rs/.Re
[netbsd-mini2440.git] / share / man / man4 / ddb.4
blobea5e030807828d217ef8769d84ec76318b6cef2a
1 .\"     $NetBSD: ddb.4,v 1.126 2009/06/05 04:40:23 mrg Exp $
2 .\"
3 .\" Copyright (c) 1997 - 2009 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 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19 .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 .\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22 .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 .\" POSSIBILITY OF SUCH DAMAGE.
29 .\"
30 .\" ---
31 .\"     This manual page was derived from a -man.old document which bore
32 .\"     the following copyright message:
33 .\" ---
34 .\"
35 .\" Mach Operating System
36 .\" Copyright (c) 1991,1990 Carnegie Mellon University
37 .\" All Rights Reserved.
38 .\"
39 .\" Permission to use, copy, modify and distribute this software and its
40 .\" documentation is hereby granted, provided that both the copyright
41 .\" notice and this permission notice appear in all copies of the
42 .\" software, derivative works or modified versions, and any portions
43 .\" thereof, and that both notices appear in supporting documentation.
44 .\"
45 .\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
46 .\" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
47 .\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
48 .\"
49 .\" Carnegie Mellon requests users of this software to return to
50 .\"
51 .\"  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
52 .\"  School of Computer Science
53 .\"  Carnegie Mellon University
54 .\"  Pittsburgh PA 15213-3890
55 .\"
56 .\" any improvements or extensions that they make and grant Carnegie Mellon
57 .\" the rights to redistribute these changes.
58 .\"
59 .Dd March 7, 2009
60 .Dt DDB 4
61 .Os
62 .Sh NAME
63 .Nm ddb
64 .Nd in-kernel debugger
65 .Sh SYNOPSIS
66 .Cd options DDB
67 .Pp
68 To enable history editing:
69 .Cd options DDB_HISTORY_SIZE=integer
70 .Pp
71 To disable entering
72 .\" XXX: hack; .Nm automatically introduces newline in SYNOPSIS
73 .Ic ddb
74 upon kernel panic:
75 .Cd options DDB_ONPANIC=0
76 .Pp
77 To enable teeing all
78 .\" XXX: hack; .Nm automatically introduces newline in SYNOPSIS
79 .Ic ddb
80 output to the kernel msgbuf:
81 .Cd options DDB_TEE_MSGBUF=1
82 .Pp
83 To specify commands which will be executed on each entry to
84 .Ic ddb :
85 .Cd options DDB_COMMANDONENTER="trace;show registers"
86 In this case, "trace" and then "show registers" will be executed automatically.
87 .Pp
88 To enable extended online help:
89 .Cd options DDB_VERBOSE_HELP .
90 .Sh DESCRIPTION
91 .Nm
92 is the in-kernel debugger.
93 It may be entered at any time via a special key sequence, and
94 optionally may be invoked when the kernel panics.
95 .Sh ENTERING THE DEBUGGER
96 Unless
97 .Dv DDB_ONPANIC
98 is set to 0,
99 .Nm
100 will be activated whenever the kernel would otherwise panic.
103 may also be activated from the console.
104 In general, sending a break on a serial console will activate
105 .Nm .
106 There are also key sequences for each port that will activate
108 from the keyboard:
109 .Bl -tag -offset indent -width "mvme68k" -compact
110 .It alpha
111 \*[Lt]Ctrl\*[Gt]-\*[Lt]Alt\*[Gt]-\*[Lt]Esc\*[Gt] on PC style keyboards.
112 .It amd64
113 \*[Lt]Ctrl\*[Gt]-\*[Lt]Alt\*[Gt]-\*[Lt]Esc\*[Gt]
114 .It ""
115 \*[Lt]Break\*[Gt] on serial console.
116 .It amiga
117 \*[Lt]LAlt\*[Gt]-\*[Lt]LAmiga\*[Gt]-\*[Lt]F10\*[Gt]
118 .It atari
119 \*[Lt]Alt\*[Gt]-\*[Lt]LeftShift\*[Gt]-\*[Lt]F9\*[Gt]
120 .It hp300
121 \*[Lt]Shift\*[Gt]-\*[Lt]Reset\*[Gt]
122 .It hp700
123 +++++
124 (five plus signs)
125 .It ""
126 \*[Lt]Break\*[Gt] on serial console.
127 .It hpcarm
128 \*[Lt]Ctrl\*[Gt]-\*[Lt]Alt\*[Gt]-\*[Lt]Esc\*[Gt]
129 .It hpcmips
130 \*[Lt]Ctrl\*[Gt]-\*[Lt]Alt\*[Gt]-\*[Lt]Esc\*[Gt]
131 .It hpcsh
132 \*[Lt]Ctrl\*[Gt]-\*[Lt]Alt\*[Gt]-\*[Lt]Esc\*[Gt]
133 .It i386
134 \*[Lt]Ctrl\*[Gt]-\*[Lt]Alt\*[Gt]-\*[Lt]Esc\*[Gt]
135 .It ""
136 \*[Lt]Break\*[Gt] on serial console.
137 .It mac68k
138 \*[Lt]Command\*[Gt]-\*[Lt]Power\*[Gt], or the Interrupt switch.
139 .It macppc
140 Some models:
141 \*[Lt]Command\*[Gt]-\*[Lt]Option\*[Gt]-\*[Lt]Power\*[Gt]
142 .It mvme68k
143 Abort switch on CPU card.
144 .It pmax
145 \*[Lt]Do\*[Gt] on
146 .Tn LK-201
147 rcons console.
148 .It ""
149 \*[Lt]Break\*[Gt] on serial console.
150 .It sparc
151 \*[Lt]L1\*[Gt]-A, or \*[Lt]Stop\*[Gt]-A on a
152 .Tn Sun
153 keyboard.
154 .It ""
155 \*[Lt]Break\*[Gt] on serial console.
156 .It sparc64
157 \*[Lt]L1\*[Gt]-A, or \*[Lt]Stop\*[Gt]-A on a
158 .Tn Sun
159 keyboard.
160 .It ""
161 \*[Lt]Break\*[Gt] on serial console.
162 .It sun3
163 \*[Lt]L1\*[Gt]-A, or \*[Lt]Stop\*[Gt]-A on a
164 .Tn Sun
165 keyboard.
166 .It ""
167 \*[Lt]Break\*[Gt] on serial console.
168 .It vax
169 \*[Lt]Esc\*[Gt]-\*[Lt]Shift\*[Gt]-D on serial console.
170 .It x68k
171 Interrupt switch on the body.
172 .It xen
173 +++++
174 (five plus signs)
175 .It zaurus
176 \*[Lt]Ctrl\*[Gt]-\*[Lt]Alt\*[Gt]-\*[Lt]Esc\*[Gt]
179 The key sequence to activate
181 can be changed by modifying
182 .Dq hw.cnmagic
183 with
184 .Xr sysctl 8 .
185 If the console is not dedicated to
187 the sequence should not be easily typed by accident.
188 In addition,
190 may be explicitly activated by the debugging code in the kernel
192 .Cm DDB
193 is configured.
194 .Sh COMMAND SYNTAX
195 The general command syntax is:
196 .Bd -ragged -offset indent
197 .Ic command Ns Op Cm / Ns Ar modifier
198 .Ar address
199 .Op Cm , Ns Ar count
202 The current memory location being edited is referred to as
203 .Ar dot ,
204 and the next location is
205 .Ar next .
206 They are displayed as hexadecimal numbers.
208 Commands that examine and/or modify memory update
209 .Ar dot
210 to the address of the last line examined or the last location
211 modified, and set
212 .Ar next
213 to the next location to be examined or modified.
214 Other commands don't change
215 .Ar dot ,
216 and set
217 .Ar next
218 to be the same as
219 .Ar dot .
221 A blank line repeats the previous command from the address
222 .Ar next
223 with the previous
224 .Cm count
225 and no modifiers.
226 Specifying
227 .Cm address
228 sets
229 .Em dot
230 to the address.
232 .Cm address
233 is omitted,
234 .Em dot
235 is used.
236 A missing
237 .Cm count
238 is taken to be 1 for printing commands, and infinity for stack traces.
240 The syntax:
241 .Bd -ragged -offset indent
242 .Cm , Ns Ar count
245 repeats the previous command, just as a blank line does, but with
246 the specified
247 .Cm count .
250 has a
251 .Xr more 1 Ns -like
252 functionality; if a number of lines in a command's output exceeds the number
253 defined in the
254 .Va lines
255 variable, then
257 displays
258 .Dq "--db more--"
259 and waits for a response, which may be one of:
260 .Bl -tag -offset indent -width "\*[Lt]return\*[Gt]"
261 .It Aq return
262 one more line.
263 .It Aq space
264 one more page.
265 .It Ic q
266 abort the current command, and return to the command input mode.
269 You can set
270 .Va lines
271 variable to zero to disable this feature.
275 history editing is enabled (by defining the
276 .D1 Cd options DDB_HISTORY_SIZE=num
277 kernel option), then a history of the last
278 .Cm num
279 commands is kept.
280 The history can be manipulated with the following key sequences:
281 .Bl -tag -offset indent -width "\*[Lt]Ctrl\*[Gt]-P"
282 .It \*[Lt]Ctrl\*[Gt]-P
283 retrieve previous command in history (if any).
284 .It \*[Lt]Ctrl\*[Gt]-N
285 retrieve next command in history (if any).
287 .Sh COMMANDS
289 supports the following commands:
290 .Bl -tag -width 5n
291 .It Ic \&! Ns Ar address Ns Oo Cm ( Ar expression Ns Oo Ar ,... Oc Ns Cm ) Oc
292 A synonym for
293 .Ic call .
294 .It Ic break Ns Oo Cm /u Oc Ar address Ns Op Cm , Ns Ar count
295 Set a breakpoint at
296 .Ar address .
298 .Ar count
299 is supplied, continues
300 .Pq Ar count Ns -1
301 times before stopping at the breakpoint.
302 If the breakpoint is set, a breakpoint number is printed with
303 .Sq \&# .
304 This number can be used to
305 .Ic delete
306 the breakpoint, or to add
307 conditions to it.
310 .Cm /u
311 is specified,
312 set a breakpoint at a user-space address.
313 Without
314 .Cm /u ,
315 .Ar address
316 is considered to be in the kernel-space, and an address in the wrong
317 space will be rejected, and an error message will be emitted.
318 This modifier may only be used if it is supported by machine dependent
319 routines.
321 Warning: if a user text is shadowed by a normal user-space debugger,
322 user-space breakpoints may not work correctly.
323 Setting a breakpoint at the low-level code paths may also cause
324 strange behavior.
325 .It Ic bt Ns Oo Cm /ul Oc Oo Ar frame-address Oc Ns Oo Cm , Ns Ar count Oc
326 A synonym for
327 .Ic trace .
328 .It Ic bt/t Ns Oo Cm /ul Oc Oo Ar pid Oc Ns Oo Cm , Ns Ar count Oc
329 A synonym for
330 .Ic trace/t .
331 .It Ic bt/a Ns Oo Cm /ul Oc Oo Ar lwpaddr Oc Ns Oo Cm , Ns Ar count Oc
332 A synonym for
333 .Ic trace/a .
334 .It Ic call Ar address Ns Oo Cm ( Ns Ar expression Ns Oo Ar ,... Oc Ns Cm ) Oc
335 Call the function specified by
336 .Ar address
337 with the argument(s) listed in parentheses.
338 Parentheses may be omitted if the function takes no arguments.
339 The number of arguments is currently limited to 10.
340 .It Ic continue Ns Op Cm /c
341 Continue execution until a breakpoint or watchpoint.
343 .Cm /c
344 is specified, count instructions while executing.
345 Some machines (e.g., pmax) also count loads and stores.
347 Warning: when counting, the debugger is really silently
348 single-stepping.
349 This means that single-stepping on low-level may cause strange
350 behavior.
351 .It Ic delete Ar "address" | Cm # Ns Ar number
352 Delete a breakpoint.
353 The target breakpoint may be specified by
354 .Ar address ,
355 as per
356 .Ic break ,
357 or by the breakpoint number returned by
358 .Ic break
359 if it's prefixed with
360 .Sq Cm \&# .
361 .It Ic dmesg Op Ar count
362 Prints the contents of the kernel message buffer.
363 The optional
364 .Ar count
365 argument will limit printing to at most the last
366 .Ar count
367 bytes of the message buffer.
368 .It Ic dwatch Ar address
369 Delete the watchpoint at
370 .Ar address
371 that was previously set with
372 .Ic watch
373 command.
374 .It Ic examine Ns Oo Cm / Ns Ar modifier Oc Ar address Ns Op Cm , Ns Ar count
375 Display the address locations according to the format in
376 .Ar modifier .
377 Multiple modifier formats display multiple locations.
379 .Ar modifier
380 isn't specified, the modifier from the last use of
381 .Ic examine
382 is used.
384 The valid format characters for
385 .Ar modifier
386 are:
387 .Bl -tag -offset indent -width 2n -compact
388 .It Cm b
389 examine bytes (8 bits).
390 .It Cm h
391 examine half-words (16 bits).
392 .It Cm l
393 examine words (legacy
394 .Dq long ,
395 32 bits).
396 .It Cm L
397 examine long words (implementation dependent)
398 .It Cm a
399 print the location being examined.
400 .It Cm A
401 print the location with a line number if possible.
402 .It Cm x
403 display in unsigned hex.
404 .It Cm z
405 display in signed hex.
406 .It Cm o
407 display in unsigned octal.
408 .It Cm d
409 display in signed decimal.
410 .It Cm u
411 display in unsigned decimal.
412 .It Cm r
413 display in current radix, signed.
414 .It Cm c
415 display low 8 bits as a character.
416 Non-printing characters as displayed as an octal escape code
417 (e.g.,
418 .Sq \e000 ) .
419 .It Cm s
420 display the NUL terminated string at the location.
421 Non-printing characters are displayed as octal escapes.
422 .It Cm m
423 display in unsigned hex with a character dump at the end of each line.
424 The location is displayed as hex at the beginning of each line.
425 .It Cm i
426 display as a machine instruction.
427 .It Cm I
428 display as a machine instruction, with possible alternative formats
429 depending upon the machine:
430 .Bl -tag -offset indent -width "sparc" -compact
431 .It alpha
432 print register operands
433 .It m68k
434 use Motorola syntax
435 .It vax
436 don't assume that each external label is a procedure entry mask
439 .It Ic kill Ar pid Ns Op Cm , Ns Ar signal_number
440 Send a signal to the process specified by the
441 .Ar pid .
442 Note that
443 .Ar pid
444 is interpreted using the current radix (see
445 .Cm trace/t
446 command for details).
448 .Ar signal_number
449 isn't specified, the SIGTERM signal is sent.
450 .It Ic match Ns Op Cm /p
451 A synonym for
452 .Ic next .
453 .It Ic next Ns Op Cm /p
454 Stop at the matching return instruction.
456 .Cm /p
457 is specified, print the call nesting depth and the
458 cumulative instruction count at each call or return.
459 Otherwise, only print when the matching return is hit.
460 .It Ic print Ns Oo Cm /axzodurc Oc Ar address Op Ar address ...
461 Print addresses
462 .Ar address
463 according to the modifier character, as per
464 .Ic examine .
465 Valid modifiers are:
466 .Cm /a ,
467 .Cm /x ,
468 .Cm /z ,
469 .Cm /o ,
470 .Cm /d ,
471 .Cm /u ,
472 .Cm /r ,
474 .Cm /c
475 (as per
476 .Ic examine ) .
477 If no modifier is specified, the most recent one specified is used.
478 .Ar address
479 may be a string, and is printed
480 .Dq as-is .
481 For example:
482 .Bd -literal -offset indent
483 print/x "eax = " $eax "\enecx = " $ecx "\en"
486 will produce:
487 .Bd -literal -offset indent
488 eax = xxxxxx
489 ecx = yyyyyy
491 .It Ic ps Ns Oo Cm /a Oc Ns Oo Cm /n Oc Ns Oo Cm /w Oc Ns Oo Cm /l Oc
492 A synonym for
493 .Ic show all procs .
494 .It Ic reboot Op Ar flags
495 Reboot, using the optionally supplied boot
496 .Ar flags ,
497 which is a bitmask supporting the same values as for
498 .Xr reboot 2 .
499 Some of the more useful flags:
500 .Bl -column "Value" "RB_POWERDOWN" "Description"
501 .It Sy "Value" Ta Sy "Name" Ta Sy "Description"
502 .It 0x1 Ta RB_ASKNAME Ta Ask for file name to reboot from
503 .It 0x2 Ta RB_SINGLE Ta Reboot to single user mode
504 .It 0x4 Ta RB_NOSYNC Ta Don't sync before reboot
505 .It 0x8 Ta RB_HALT Ta Halt instead of reboot
506 .It 0x40 Ta RB_KDB Ta Boot into kernel debugger
507 .It 0x100 Ta RB_DUMP Ta Dump unconditionally before reboot
508 .It 0x808 Ta RB_POWERDOWN Ta Power off (or at least halt)
511 Note: Limitations of the command line interface preclude
512 specification of a boot string.
513 .It Ic search Ns Oo Cm /bhl Oc Ar address Ar value \
514 Oo Ar mask Oc Oo Cm , Ns Ar count Oc
515 Search memory from
516 .Ar address
518 .Ar value .
519 The unit size is specified with a modifier character, as per
520 .Ic examine .
521 Valid modifiers are:
522 .Cm /b ,
523 .Cm /h ,
525 .Cm /l .
526 If no modifier is specified,
527 .Cm /l
528 is used.
530 This command might fail in interesting ways if it doesn't find
531 .Ar value .
532 This is because
534 doesn't always recover from touching bad memory.
535 The optional
536 .Ar count
537 limits the search.
538 .It Ic set Cm $ Ns Ar variable Oo Cm = Oc Ar expression
539 Set the named variable or register to the value of
540 .Ar expression .
541 Valid variable names are described in
542 .Sx VARIABLES .
543 .It Ic show all callout
544 Display information about callouts in the system.
546 .Xr callout 9
547 for more information on callouts.
548 .It Ic show all pages
549 Display basic information about all physical pages managed by the VM system.
550 For more detailed information about a single page, use
551 .Ic show page .
552 .It Ic show all pools Ns Op Cm /clp
553 Display all pool information.
554 Modifiers are the same as
555 .Ic show pool .
556 .It Ic "show\ all\ procs" Ns Oo Cm /a Oc Ns Oo Cm /n Oc Ns Oo Cm /w Oc Ns \
557 Oo Cm /l Oc
558 Display all process information.
559 Valid modifiers:
560 .Bl -tag -width 3n
561 .It Cm /n
562 show process information in a
563 .Xr ps 1
564 style format.
565 Information printed includes: process ID, parent process ID,
566 process group, UID, process status, process flags, process
567 command name, and process wait channel message.
568 .It Cm /a
569 show the kernel virtual addresses of each process'
570 proc structure, u-area, and vmspace structure.
571 The vmspace address is also the address of the process'
572 vm_map structure, and can be used in the
573 .Ic show map
574 command.
575 .It Cm /w
576 show each process' PID, command, system call emulation, wait channel
577 address, and wait channel message.
578 .It Cm /l
579 show each process' associated LWP information, including each LWP's
580 LID, flags, kernel LWP structure address, u-area, and wait channel.
581 This is the default.
583 .It Ic show arptab
584 Dump the entire
585 .Dv AF_INET
586 routing table.
587 This command is available only on systems which support inet and ARP.
588 .It Ic show breaks
589 Display all breakpoints.
590 .It Ic show buf Ns Oo Cm /f Oc Ar address
591 Print the struct buf at
592 .Ar address .
594 .Cm /f
595 does nothing at this time.
596 .It Ic show event Ns Oo Cm /f Oc Ns Oo Cm /i Oc Ns Oo Cm /m Oc Ns \
597 Oo Cm /t Oc
598 Print all the non-zero
599 .Xr evcnt 9
600 event counters.
601 Valid modifiers:
602 .Bl -tag -width 3n
603 .It Cm /f
604 event counters with a count of zero are printed as well.
605 .It Cm /i
606 interrupted counters will be displayed.
607 .It Cm /m
608 misc counters will be displayed.
609 .It Cm /t
610 trap counters will be displayed.
613 If none of
614 .Cm /i ,
615 .Cm /m
617 .Cm /t
618 are specified, all are shown.
619 You can combine any of these.
620 For example, the modifier
621 .Cm /itf
622 will select both interrupt and trap events, including those that are non-zero.
623 .It Ic show files Ar address
624 Display information about the vnodes of the files that are currently
625 open by the process associated with the proc structure at
626 .Ar address .
627 This address can be found using the
628 .Ic show all procs /a
629 command.
630 If the kernel is compiled with
631 .Cd options LOCKDEBUG
632 then details about the locking of the underlying uvm object will also
633 be displayed.
634 .It Ic show lock Ar address
635 Display information about a lock at
636 .Ar address .
637 This command is useful only if a kernel is compiled with
638 .Cd options LOCKDEBUG .
639 .It Ic show malloc Ar address
641 .Ar address
642 is supplied, display the kernel memory allocator's idea on the
643 allocation status for it.
644 Also, print out global statistics for the memory allocator.
645 This command is useful only if a kernel is compiled with
646 .Cd options MALLOC_DEBUG .
647 .It Ic show map Ns Oo Cm /f Oc Ar address
648 Print the vm_map at
649 .Ar address .
651 .Cm /f
652 is specified, the complete map is printed.
653 .It Ic show mount Ns Oo Cm /f Oc Ar address
654 Print the mount structure at
655 .Ar address .
657 .Cm /f
658 is specified, the complete vnode list is printed.
659 .It Ic show mbuf Ns Oo Cm /c Oc Ar address
660 Print the mbuf structure at
661 .Ar address .
663 .Cm /c
664 is specified, the mbufs in the chain are followed.
665 .It Ic show ncache Ar address
666 Dump the namecache list associated with vnode at
667 .Ar address .
668 .It Ic show object Ns Oo Cm /f Oc Ar address
669 Print the vm_object at
670 .Ar address .
672 .Cm /f
673 is specified, the complete object is printed.
674 .It Ic show page Ns Oo Cm /f Oc Ar address
675 Print the vm_page at
676 .Ar address .
678 .Cm /f
679 is specified, the complete page is printed.
680 .It Ic show pool Ns Oo Cm /clp Oc Ar address
681 Print the pool at
682 .Ar address .
683 Valid modifiers:
684 .Bl -tag -width 4n -compact
685 .It Cm /c
686 Print the cachelist and its statistics for this pool.
687 .It Cm /l
688 Print the log entries for this pool.
689 .It Cm /p
690 Print the pagelist for this pool.
692 .It Ic show registers Ns Op Cm /u
693 Display the register set.
695 .Cm /u
696 is specified, display user registers instead of kernel registers
697 or the currently save one.
699 Warning: support for
700 .Cm /u
701 is machine dependent.
702 If not supported, incorrect information will be displayed.
703 .It Ic show sched_qs
704 Print the state of the scheduler's run queues.
705 For each run queue that has an LWP, the run queue index and the list
706 of LWPs will be shown.
707 If the run queue has LWPs, but the sched_whichqs bit is not set for that
708 queue, the queue index will be prefixed with a
709 .Sq \&! .
710 .It Ic show uvmexp
711 Print a selection of UVM counters and statistics.
712 .It Ic show uvmhist
713 Dumps the UVM histories.
714 This command is available only if a kernel is compiled with
715 .Cd options UVMHIST .
716 .It Ic show vnode Ns Oo Cm /f Oc Ar address
717 Print the vnode at
718 .Ar address .
720 .Cm /f
721 is specified, the complete vnode is printed.
722 .It Ic show watches
723 Display all watchpoints.
724 .It Ic sifting Ns Oo Cm /F Oc Ar string
725 Search the symbol tables for all symbols of which
726 .Ar string
727 is a substring, and display them.
729 .Cm /F
730 is specified, a character is displayed immediately after each symbol
731 name indicating the type of symbol.
734 .Xr a.out 5 Ns -format
735 symbol tables,
736 absolute symbols display
737 .Sy @ ,
738 text segment symbols display
739 .Sy * ,
740 data segment symbols display
741 .Sy + ,
742 .Tn BSS
743 segment symbols display
744 .Sy - ,
745 and filename symbols display
746 .Sy / .
748 .Tn ELF Ns -format
749 symbol tables,
750 object symbols display
751 .Sy + ,
752 function symbols display
753 .Sy * ,
754 section symbols display
755 .Sy \*[Am] ,
756 and file symbols display
757 .Sy / .
759 To sift for a string beginning with a number, escape the first
760 character with a backslash as:
761 .Bd -literal -offset indent
762 sifting \\386
764 .It Ic step Ns Oo Cm /p Oc Op Cm , Ns Ar count
765 Single-step
766 .Ar count
767 times.
769 .Cm /p
770 is specified, print each instruction at each step.
771 Otherwise, only print the last instruction.
773 Warning: depending on the machine type, it may not be possible
774 to single-step through some low-level code paths or user-space
775 code.
776 On machines with software-emulated single-stepping (e.g., pmax),
777 stepping through code executed by interrupt handlers will probably
778 do the wrong thing.
779 .It Ic sync
780 Force a crash dump, and then reboot.
781 .It Ic trace Ns Oo Cm /u Ns Oo Cm l Oc Oc Oo Ar frame-address Oc Ns \
782 Oo Cm , Ns Ar count Oc
783 Stack trace from
784 .Ar frame-address .
786 .Cm /u
787 is specified, trace user-space, otherwise trace kernel-space.
788 .Ar count
789 is the number of frames to be traced.
791 .Ar count
792 is omitted, all frames are printed.
794 .Cm /l
795 is specified, the trace is printed and also stored in the kernel
796 message buffer.
798 Warning: user-space stack trace is valid only if the machine dependent
799 code supports it.
800 .It Ic trace/t Ns Oo Cm l Oc Oo Ar pid Oc Ns Oo Cm , Ns Ar count Oc
801 Stack trace by
802 .Dq thread
803 (process, on
804 .Nx )
805 rather than by stack frame address.
806 Note that
807 .Ar pid
808 is interpreted using the current radix, whilst
809 .Ic ps
810 displays pids in decimal; prefix
811 .Ar pid
812 with
813 .Sq 0t
814 to force it to be interpreted as decimal (see
815 .Sx VARIABLES
816 section for radix).
818 .Cm /l
819 is specified, the trace is printed and also stored in the kernel
820 message buffer.
822 Warning: trace by pid is valid only if the machine dependent code
823 supports it.
824 .It Ic trace/a Ns Oo Cm l Oc Oo Ar lwpaddr Oc Ns Oo Cm , Ns Ar count Oc
825 Stack trace by light weight process (LWP) address
826 rather than by stack frame address.
828 .Cm /l
829 is specified, the trace is printed and also stored in the kernel
830 message buffer.
832 Warning: trace by LWP address is valid only if the machine dependent
833 code supports it.
834 .It Ic until Ns Op Cm /p
835 Stop at the next call or return instruction.
837 .Cm /p
838 is specified, print the call nesting depth and the
839 cumulative instruction count at each call or return.
840 Otherwise, only print when the matching return is hit.
841 .It Ic watch Ar address Ns Oo Cm , Ns Ar size Oc
842 Set a watchpoint for a region.
843 Execution stops when an attempt to modify the region occurs.
844 .Ar size
845 defaults to 4.
847 If you specify a wrong space address, the request is
848 rejected with an error message.
850 Warning: attempts to watch wired kernel memory may cause
851 an unrecoverable error in some systems such as i386.
852 Watchpoints on user addresses work the best.
853 .It Ic whatis Ar address
854 Describe what an address is.
855 .It Ic write Ns Oo Cm /bhl Oc Ar address Ar expression Oo Ar expression ... Oc
856 Write the
857 .Ar expression Ns s
858 at succeeding locations.
859 The unit size is specified with a modifier character, as per
860 .Ic examine .
861 Valid modifiers are:
862 .Cm /b ,
863 .Cm /h ,
865 .Cm /l .
866 If no modifier is specified,
867 .Cm /l
868 is used.
870 Warning: since there is no delimiter between
871 .Ar expression Ns s ,
872 strange things may occur.
873 It's best to enclose each
874 .Ar expression
875 in parentheses.
876 .It Ic x Ns Oo Cm / Ns Ar modifier Oc Ar address Ns Op Cm , Ns Ar count
877 A synonym for
878 .Ic examine .
879 .\" XXX - these commands aren't implemented; jhawk 19 May 2000
880 .\" .It Ic xf
881 .\" Examine forward.
882 .\" .Ic xf
883 .\" re-executes the most recent
884 .\" .Ic execute
885 .\" command with the same parameters except that
886 .\" .Ar address
887 .\" is set to
888 .\" .Ar next .
889 .\" .It Ic xb
890 .\" Examine backward.
891 .\" .Ic xb
892 .\" re-executes the most recent
893 .\" .Ic execute
894 .\" command with the same parameters, except that
895 .\" .Ar address
896 .\" is set to the last start address minus its size.
898 .Sh MACHINE-SPECIFIC COMMANDS
899 The "glue" code that hooks
901 into the
903 kernel for any given port can also add machine specific commands
904 to the
906 command parser.
907 All of these commands are preceded by the command word
908 .Em machine
909 to indicate that they are part of the machine-specific command
910 set (e.g.
911 .Ic machine reboot ) .
912 Some of these commands are:
913 .Ss ALPHA
914 .Bl -tag -width "traptrace" -compact
915 .It Ic halt
916 Call the PROM monitor to halt the CPU.
917 .It Ic reboot
918 Call the PROM monitor to reboot the CPU.
920 .Ss ARM32
921 .Bl -tag -width "traptrace" -compact
922 .It Ic panic
923 Print the current "panic" string.
924 .It Ic frame
925 Given a trap frame address, print out the trap frame.
927 .Ss MIPS
928 .Bl -tag -width "traptrace" -compact
929 .It Ic cp0
930 Dump CP0 (coprocessor 0) register values.
931 .It Ic kvtop
932 Print the physical address for a given kernel virtual address.
933 .It Ic tlb
934 Print out the Translation Lookaside Buffer (TLB).
935 Only works in
937 kernels compiled with
938 .Dv DEBUG
939 option.
941 .Ss SH3
942 .Bl -tag -width "traptrace" -compact
943 .It Ic tlb
944 Print TLB entries
945 .It Ic cache
946 Print cache entries
947 .It Ic frame
948 Print switch frame and trap frames.
949 .It Ic stack
950 Print kernel stack usage.
951 Only works in
953 kernels compiled with the
954 .Dv KSTACK_DEBUG
955 option.
957 .Ss SPARC
958 .Bl -tag -width "traptrace" -compact
959 .It Ic prom
960 Exit to the Sun PROM monitor.
962 .Ss SPARC64
963 .Bl -tag -width "traptrace" -compact
964 .It Ic ctx
965 Print process context information.
966 .It Ic cpu
967 Switch to another cpu.
968 .It Ic dtlb
969 Print data translation look-aside buffer context information.
970 .It Ic dtsb
971 Display data translation storage buffer information.
972 .It Ic kmap
973 Display information about the listed mapping in the kernel pmap.
974 Use the
975 .Dq f
976 modifier to get a full listing.
977 .It Ic extract
978 Extract the physical address for a given virtual address from the kernel pmap.
979 .It Ic fpstate
980 Dump the FPU state.
981 .It Ic itlb
982 Print instruction translation look-aside buffer context information.
983 .It Ic itsb
984 Display instruction translation storage buffer information.
985 .It Ic lwp
986 Display a struct lwp
987 .It Ic pcb
988 Display information about the
989 .Dq struct pcb
990 listed.
991 .It Ic pctx
992 Attempt to change process context.
993 .It Ic page
994 Display the pointer to the
995 .Dq struct vm_page
996 for this physical address.
997 .It Ic phys
998 Display physical memory.
999 .It Ic pmap
1000 Display the pmap.
1001 Use the
1002 .Dq f
1003 modifier to get a fuller listing.
1004 .It Ic proc
1005 Display some information about the process pointed to, or curproc.
1006 .It Ic prom
1007 Enter the OFW PROM.
1008 .It Ic pv
1009 Display the
1010 .Dq struct pv_entry
1011 pointed to.
1012 .It Ic sir
1013 Reset the machine and enter prom (do a Software Initiated Reset).
1014 .It Ic stack
1015 Dump the window stack.
1016 Use the
1017 .Dq u
1018 modifier to get userland information.
1019 .It Ic tf
1020 Display full trap frame state.
1021 This is most useful for inclusion with bug reports.
1022 .It Ic ts
1023 Display trap state.
1024 .It Ic traptrace
1025 Display or set trap trace information.
1026 Use the
1027 .Dq r
1029 .Dq f
1030 modifiers to get reversed and full information, respectively.
1031 .It Ic watch
1032 Set or clear a physical or virtual hardware watchpoint.
1033 Pass the address to be watched, or
1034 .Dq 0
1035 (or omit the address) to clear the watchpoint.
1036 Optional modifiers are
1037 .Dq p
1038 for physical address,
1039 .Dq r
1040 for trap on read access (default: trap on write access only),
1041 .Dq b
1042 for 8 bit width,
1043 .Dq h
1044 for 16 bit,
1045 .Dq l
1046 for 32 bit or
1047 .Dq L
1048 for 64 bit.
1049 .It Ic window
1050 Print register window information.
1051 Argument is a stack frame number (0 is
1052 top of stack, which is used when no index is given).
1054 .Ss SUN3 and SUN3X
1055 .Bl -tag -width "traptrace" -compact
1056 .It Ic abort
1057 Drop into monitor via abort (allows continue).
1058 .It Ic halt
1059 Exit to Sun PROM monitor as in
1060 .Xr halt 8 .
1061 .It Ic reboot
1062 Reboot the machine as in
1063 .Xr reboot 8 .
1064 .It Ic pgmap
1065 Given an address, print the address, segment map, page map, and
1066 Page Table Entry (PTE).
1068 .Sh VARIABLES
1070 accesses registers and variables as
1071 .Cm $ Ns Ar name .
1072 Register names are as per the
1073 .Ic show registers
1074 command.
1075 Some variables are suffixed with numbers, and may have a modifier
1076 following a colon immediately after the variable name.
1077 For example, register variables may have a
1078 .Sq u
1079 modifier to indicate user register
1080 (e.g.,
1081 .Li "$eax:u" ) .
1083 Built-in variables currently supported are:
1084 .Bl -tag -offset indent -width "maxwidth" -compact
1085 .It Va lines
1086 The number of lines.
1087 This is used by the
1088 .Ic more
1089 feature.
1090 When this variable is set to zero the
1091 .Ic more
1092 feature is disabled.
1093 .It Va maxoff
1094 Addresses are printed as
1095 .Li 'symbol'+offset
1096 unless
1097 .Li offset
1098 is greater than
1099 .Va maxoff .
1100 .It Va maxwidth
1101 The width of the displayed line.
1103 wraps the current line by printing new line when
1104 .Va maxwidth
1105 column is reached.
1106 When this variable is set to zero
1108 doesn't perform any wrapping.
1109 .It Va onpanic
1110 If non-zero (the default),
1112 will be invoked when the kernel panics.
1113 If the kernel configuration option
1114 .D1 Cd options DDB_ONPANIC=0
1115 is used,
1116 .Va onpanic
1117 will be initialized to off.
1118 .It Va fromconsole
1119 If non-zero (the default),
1120 the kernel allows to enter
1122 from the console (by break signal or special key sequence).
1123 If the kernel configuration option
1124 .D1 Cd options DDB_FROMCONSOLE=0
1125 is used,
1126 .Va fromconsole
1127 will be initialized to off.
1128 .It Va radix
1129 Input and output radix.
1130 .It Va tabstops
1131 Tab stop width.
1132 .It Va tee_msgbuf
1133 If explicitly set to non zero (zero is the default) all
1135 output will not only be displayed on screen but
1136 also be fed to the msgbuf.
1137 The default of the variable can be set using the kernel configuration option
1138 .D1 Cd options DDB_TEE_MSGBUF=1
1139 which will initialize
1140 .Va tee_msgbuf
1141 to be 1.
1142 This option is especially handy for poor souls
1143 who don't have a serial console but want to recall
1145 output from a crash investigation.
1146 This option is more generic than the /l command modifier possible for
1147 selected commands as discussed above to log the output.
1148 Mixing both /l
1149 and this setting can give double loggings.
1150 .\" .It Va work Ns Sy xx
1151 .\" Temporary work variable.
1152 .\" .Sq Sy xx
1153 .\" is between 0 and 31.
1156 All built-in variables are accessible via
1157 .Xr sysctl 3 .
1158 .Sh EXPRESSIONS
1159 Almost all expression operators in C are supported, except
1160 .Sq \&~ ,
1161 .Sq \&^ ,
1162 and unary
1163 .Sq \&\*[Am] .
1164 Special rules in
1166 are:
1167 .Bl -tag -offset indent -width "identifier"
1168 .It Ar identifier
1169 name of a symbol.
1170 It is translated to the address (or value) of it.
1171 .Sq \&.
1173 .Sq \&:
1174 can be used in the identifier.
1175 If supported by an object format dependent routine,
1176 .Sm off
1178 .Oo Ar filename : Oc
1179 .Ar function
1180 .Oo : Ar line\ number Oc ,
1182 .Sm on
1183 .Sm off
1185 .Oo Ar filename : Oc
1186 .Ar variable ,
1188 .Sm on
1190 .Sm off
1192 .Ar filename
1193 .Oo : Ar "line number" Oc ,
1195 .Sm on
1196 can be accepted as a symbol.
1197 The symbol may be prefixed with
1198 .Ar symbol_table_name\^ : :
1199 (e.g.,
1200 .Li emulator::mach_msg_trap )
1201 to specify other than kernel symbols.
1202 .It Ar number
1203 number.
1204 Radix is determined by the first two characters:
1205 .Sq 0x
1206 - hex,
1207 .Sq 0o
1208 - octal,
1209 .Sq 0t
1210 - decimal,
1211 otherwise follow current radix.
1212 .It Cm .
1213 .Ar dot
1214 .It Cm +
1215 .Ar next
1216 .It Cm ..
1217 address of the start of the last line examined.
1218 Unlike
1219 .Ar dot
1221 .Ar next ,
1222 this is only changed by the
1223 .Ic examine
1225 .Ic write
1226 commands.
1227 .It Cm \&" \"" XXX: emacs highlighting
1228 last address explicitly specified.
1229 .It Cm $ Ns Ar name
1230 register name or variable.
1231 It is translated to the value of it.
1232 It may be followed by a
1233 .Sq \&:
1234 and modifiers as described above.
1235 .It Cm #
1236 a binary operator which rounds up the left hand side to the next
1237 multiple of right hand side.
1238 .It Cm * Ns Ar expr
1239 expression indirection.
1240 It may be followed by a
1241 .Sq \&:
1242 and modifiers as described above.
1244 .Sh SEE ALSO
1245 .Xr reboot 2 ,
1246 .Xr options 4 ,
1247 .Xr crash 8 ,
1248 .Xr reboot 8 ,
1249 .Xr sysctl 8 ,
1250 .Xr cnmagic 9
1251 .Sh HISTORY
1254 kernel debugger was written as part of the MACH project at
1255 Carnegie-Mellon University.