diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-10-18 08:53:40 +0000 |
commit | d6583bb2a13f329cf0332ef2570eb8bb8fc0e39c (patch) | |
tree | ece253b876159b39c620e62b6c9b1174642e070e /share/man/man4/ddb.4 |
initial import of NetBSD tree
Diffstat (limited to 'share/man/man4/ddb.4')
-rw-r--r-- | share/man/man4/ddb.4 | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/share/man/man4/ddb.4 b/share/man/man4/ddb.4 new file mode 100644 index 00000000000..c616bf066e0 --- /dev/null +++ b/share/man/man4/ddb.4 @@ -0,0 +1,371 @@ +.\" -*- nroff -*- +.\" +.\" $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. +.\" +.TH ddb 4 +.SH NAME +ddb \- kernel debugger +.de XX +.sp +.ti -4n +\\$1 +.br +.sp +.. +.de XS +.nr )R +\\$1 +.. +.de XE +.nr )R -\\$1 +.. +.SH DESCRIPTION +.br +.sp +The kernel debugger has most of the features of the old kdb, +but with a more rational (gdb-like) syntax. +.sp +The current location is called 'dot'. The 'dot' is displayed with +a hexadecimal format at a prompt. +Examine and write commands update 'dot' to the address of the last line +examined or the last location modified, and set 'next' to the address of +the next location to be examined or changed. +Other commands don't change 'dot', and set 'next' to be the same as 'dot'. +.sp +The general command syntax is: +.sp +.ti +4n +\fIcommand[/modifier] address [,count]\fR +.sp +A blank line repeats from the address 'next' with count 1 and no modifiers. +Specifying 'address' sets 'dot' to the address. +Omitting 'address' uses 'dot'. +A missing 'count' is taken to be 1 for printing commands or infinity +for stack traces. +.sp +"\fBddb\fR" has a feature like a command "\fBmore\fR" +for the output. If an output line exceeds the number set in the $lines +variable, it displays "\fI--db_more--\fR" +and waits for a response. +The valid responses for it are: +.XS 4n +.IP \fI\<space>\fR 10n +one more page +.IP \fI\<return>\fR 10n +one more line +.IP \fB\q\fR 10n +abort the current command, and return to the command input mode. +.LP +.sp +.XE 4n +.LP +.B COMMANDS +.sp +.XS 4n +.LP +.XX "\fBexamine(x) \fI[/<modifier>] <addr>[,<count>]\fR" +Display the addressed locations according to the formats in the modifier. +Multiple modifier formats display multiple locations. +If no format is specified, the last formats specified for this command +is used. +.br +The format characters are +.sp +.LP +.XS 2n +.IP b 5n +look at by bytes(8 bits) +.IP h 5n +look at by half words(16 bits) +.IP l 5n +look at by long words(32 bits) +.IP a 5n +print the location being displayed +.IP A 5n +print the location with a line number if possible +.IP x 5n +display in unsigned hex +.IP z 5n +display in signed hex +.IP o 5n +display in unsigned octal +.IP d 5n +display in signed decimal +.IP u 5n +display in unsigned decimal +.IP r 5n +display in current radix, signed +.IP c 5n +display low 8 bits as a character. +Non-printing characters are displayed as an octal escape code (e.g. '\\000'). +.IP s 5n +display the null-terminated string at the location. +Non-printing characters are displayed as octal escapes. +.IP m 5n +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. +.IP i 5n +display as an instruction +.IP I 5n +display as an instruction with possible alternate formats depending on the +machine: +.XE 2n +.LP +.XS 5n +.LP +.IP vax 6n +don't assume that each external label is a procedure entry mask +.IP i386 6n +don't round to the next long word boundary +.IP mips 6n +print register contents +.LP +.XE 5n +.LP +.XX xf +Examine forward. +It executes an examine command with the last specified parameters to it +except that the next address displayed by it is used as the start address. +.XX xb +Examine backward. +It executes an examine command with the last specified parameters to it +except that the last start address subtracted by the size displayed by it +is used as the start address. +.XX "\fBprint[/axzodurc] \fI<addr1> [ <addr2> ... ]\fR" +Print 'addr's according to the modifier character. +Valid formats are: a x z o d u r c. +If no modifier is specified, the last one specified to it is used. 'addr' +can be a string, and it is printed as it is. For example, +.br +.sp +.ti +4n +print/x "eax = " $eax "\\necx = " $ecx "\\n" +.br +.sp +will print like +.sp +.in +4n +eax = xxxxxx +.br +ecx = yyyyyy +.in -4n +.sp +.br +.XX "\fBwrite[/bhl] \fI<addr> <expr1> [ <expr2> ... ]\fR" +Write the expressions at succeeding locations. +The write unit size can be specified in the modifier with a letter +b (byte), h (half word) or l(long word) respectively. If omitted, +long word is assumed. +.br +Warning: since there is no delimiter between expressions, strange +things may happen. +It's best to enclose each expression in parentheses. +.XX "\fBset \fI$<variable> [=] <expr>\fR" +Set the named variable or register with the value of 'expr'. +Valid variable names are described below. +.XX "\fBbreak[/u] \fI<addr>[,<count>]\fR" +Set a break point at 'addr'. +If count is supplied, continues (count-1) times before stopping at the +break point. If the break point is set, a break point number is +printed with '#'. This number can be used in deleting the break point +or adding conditions to it. +.LP +.XS 2n +.IP u 5n +Set a break point in user space address. Without 'u' option, +the address is considered in the kernel space, and wrong space address +is rejected with an error message. +This option can be used only if it is supported by machine dependent +routines. +.LP +.XE 2n +Warning: if a user text is shadowed by a normal user space debugger, +user space break points may not work correctly. Setting a break +point at the low-level code paths may also cause strange behavior. +.XX "\fBdelete \fI<addr>|#<number>\fR" +Delete the break point. The target break point can be specified by a +break point number with '#', or by 'addr' like specified in 'break' +command. +.XX "\fBstep[/p] \fI[,<count>]\fR" +Single step 'count' times. +If 'p' option is specified, print each instruction at each step. +Otherwise, only print the last instruction. +.br +.sp +Warning: depending on machine type, it may not be possible to +single-step through some low-level code paths or user space code. +On machines with software-emulated single-stepping (e.g., pmax), +stepping through code executed by interrupt handlers will probably +do the wrong thing. +.XX "\fBcontinue[/c]\fR" +Continue execution until a breakpoint or watchpoint. +If /c, count instructions while executing. +Some machines (e.g., pmax) also count loads and stores. +.br +.sp +Warning: when counting, the debugger is really silently single-stepping. +This means that single-stepping on low-level code may cause strange +behavior. +.XX "\fBuntil[/p]\fR" +Stop at the next call or return instruction. +If 'p' option is specified, print the call nesting depth and the +cumulative instruction count at each call or return. Otherwise, +only print when the matching return is hit. +.XX "\fBnext[/p]\fR" +Stop at the matching return instruction. +If 'p' option is specified, print the call nesting depth and the +cumulative instruction count at each call or return. Otherwise, +only print when the matching return is hit. +.XX "\fBmatch[/p]\fR" +A synonym for 'next'. +.XX "\fBtrace[/u] \fI[ <frame_addr> ][,<count>]\fR" +Stack trace. 'u' option traces user space; if omitted, only traces +kernel space. 'count' is the number of frames to be traced. +If the 'count' is omitted, all frames are printed. +.br +.sp +Warning: User space stack trace is valid +only if the machine dependent code supports it. +.XX "\fBsearch[/bhl] \fI<addr> <value> [<mask>] [,<count>]\fR" +Search memory for a value. This command might fail in interesting +ways if it doesn't find the searched-for value. This is because +ddb doesn't always recover from touching bad memory. The optional +count argument limits the search. +.XX "\fBshow all procs[/m]\fR" +Display all process information. +This version of "\fBddb\fR" +prints more information than previous one. +It shows UNIX process information like "ps". +The UNIX process information may not be shown if it is not +supported in the machine, or the bottom of the stack of the +target process is not in the main memory at that time. +The 'm' options will alter the 'ps' display to show vm_map +addresses for the process and not show other info. +.br +.XX "\fBps[/m]\fR" +A synonym for 'show all procs'. +.XX "\fBshow registers\fR" +Display the register set. +If 'u' option is specified, it displays user registers instead of +kernel or currently saved one. +.br +.sp +Warning: The support of 'u' option depends on the machine. If +not supported, incorrect information will be displayed. +.XX "\fBshow map[/f] \fI<addr>\fR" +Prints the vm_map at 'addr'. If the 'f' option is specified the +complete map is printed. +.XX "\fBshow object[/f] \fI<addr>\fR" +Prints the vm_object at 'addr'. If the 'f' option is specified the +complete object is printed. +.XX "\fBshow watches\fR" +Displays all watchpoints. +.XX "\fBwatch \fI<addr>,<size>\fR" +Set a watchpoint for a region. Execution stops +when an attempt to modify the region occurs. +The 'size' argument defaults to 4. +.br +If you specify a wrong space address, the request is rejected +with an error message. +.br +.sp +Warning: Attempts to watch wired kernel memory +may cause unrecoverable error in some systems such as i386. +Watchpoints on user addresses work best. +.br +.LP +.XE 4n +.LP +.sp +.B VARIABLES +.sp +The debugger accesses registers and variables as +.I $<name>. +Register names are as in the "\fBshow registers\fR" +command. +Some variables are suffixed with numbers, and may have some modifier +following a colon immediately after the variable name. +For example, register variables can have 'u' modifier to indicate +user register (e.g. $eax:u). +.br +.sp +Built-in variables currently supported are: +.sp +.IP radix 12n +Input and output radix +.IP maxoff 12n +Addresses are printed as 'symbol'+offset unless offset is greater than maxoff. +.IP maxwidth 12n +The width of the displayed line. +.IP lines 12n +The number of lines. It is used by "more" feature. +.IP tabstops 12n +Tab stop width. +.IP work\fIxx\fR +Work variable. +.I 'xx' +can be 0 to 31. +.LP +.LP +.sp +.B EXPRESSIONS +.sp +Almost all expression operators in C are supported except '~', '^', +and unary '&'. +Special rules in "\fBddb\fR" +are: +.br +.IP "<identifier>" 15n +name of a symbol. It is translated to the address(or value) of it. '.' +and ':' can be used in the identifier. If supported by an object format +dependent routine, +[\fI<file_name>\fR:]\fI<func>\fR[:\fI<line_number>\fR] +[\fI<file_name>\fR:]\fI<variable>\fR, and +\fI<file_name>\fR[:\fI<line_number>\fR] +can be accepted as a symbol. +The symbol may be prefixed with '\fI<symbol_table_name>\fR::' +like 'emulator::mach_msg_trap' to specify other than kernel symbols. +.IP "<number>" 15n +radix is determined by the first two letters: +0x: hex, 0o: octal, 0t: decimal, otherwise, follow current radix. +.IP \. 15n +\'dot' +.IP \+ 15n +\'next' +.IP \.. 15n +address of the start of the last line examined. +Unlike 'dot' or 'next', this is only changed by "examine" or +"write" command. +.IP \' 15n +last address explicitly specified. +.IP "$<variable>" 15n +register name or variable. It is translated to the value of it. +It may be followed by a ':' and modifiers as described above. +.IP \# 15n +a binary operator which rounds up the left hand side to the next +multiple of right hand side. +.IP "*<expr>" 15n +indirection. It may be followed by a ':' and modifiers as described above. |