3 6e18e03e 2004-04-11 devnull db \- debugger
4 6e18e03e 2004-04-11 devnull .SH SYNOPSIS
7 6e18e03e 2004-04-11 devnull .I option ...
10 6e18e03e 2004-04-11 devnull .I textfile
15 6e18e03e 2004-04-11 devnull .I corefile
17 6e18e03e 2004-04-11 devnull .SH DESCRIPTION
19 6e18e03e 2004-04-11 devnull is a general purpose debugging program.
20 6e18e03e 2004-04-11 devnull It may be used to examine files and to provide
21 6e18e03e 2004-04-11 devnull a controlled environment for the execution
22 6e18e03e 2004-04-11 devnull of programs.
25 6e18e03e 2004-04-11 devnull .I textfile
26 6e18e03e 2004-04-11 devnull is a file containing the text and initialized
27 6e18e03e 2004-04-11 devnull data of an executable program.
31 6e18e03e 2004-04-11 devnull .I corefile
32 6e18e03e 2004-04-11 devnull specifies the memory image of a process.
35 6e18e03e 2004-04-11 devnull gives the id of an executing process to be accessed via
36 6e18e03e 2004-04-11 devnull .IR ptrace (2)
38 6e18e03e 2004-04-11 devnull .IR proc (5).
40 6e18e03e 2004-04-11 devnull .I corefile
41 6e18e03e 2004-04-11 devnull specifies the name of a core dump (see
42 6e18e03e 2004-04-11 devnull .IR core (5)
43 6e18e03e 2004-04-11 devnull on your system of choice) containing the
44 6e18e03e 2004-04-11 devnull memory image of a terminated process.
45 6e18e03e 2004-04-11 devnull This manual refers to the memory image specified by
48 6e18e03e 2004-04-11 devnull .I corefile
50 6e18e03e 2004-04-11 devnull .IR memfile .
54 6e18e03e 2004-04-11 devnull associated with each
55 6e18e03e 2004-04-11 devnull .I textfile
57 6e18e03e 2004-04-11 devnull .I memfile
58 6e18e03e 2004-04-11 devnull supports accesses to instructions and data in the file;
59 6e18e03e 2004-04-11 devnull see `Addresses'.
61 6e18e03e 2004-04-11 devnull An argument consisting entirely of digits is assumed
62 6e18e03e 2004-04-11 devnull to be a process id; otherwise, it is the name of a
63 6e18e03e 2004-04-11 devnull .I textfile
65 6e18e03e 2004-04-11 devnull .IR corefile .
67 6e18e03e 2004-04-11 devnull .I textfile
68 6e18e03e 2004-04-11 devnull is given, the textfile map
69 6e18e03e 2004-04-11 devnull is associated with it.
70 6e18e03e 2004-04-11 devnull If only a
71 6e18e03e 2004-04-11 devnull .I memfile
72 6e18e03e 2004-04-11 devnull is given, the textfile map is
73 6e18e03e 2004-04-11 devnull derived from the corresponding
74 6e18e03e 2004-04-11 devnull .IR textfile ,
75 6e18e03e 2004-04-11 devnull if it can be determined
76 6e18e03e 2004-04-11 devnull (this varies from system to system).
78 6e18e03e 2004-04-11 devnull .I memfile
79 6e18e03e 2004-04-11 devnull is given, the memfile map is associated with it;
80 6e18e03e 2004-04-11 devnull otherwise the map is undefined and accesses to it
81 6e18e03e 2004-04-11 devnull are not permitted.
83 6e18e03e 2004-04-11 devnull Commands to
85 6e18e03e 2004-04-11 devnull are read from the standard input and
86 6e18e03e 2004-04-11 devnull responses are to the standard output.
87 6e18e03e 2004-04-11 devnull The options are
91 6e18e03e 2004-04-11 devnull .I textfile
93 6e18e03e 2004-04-11 devnull .I memfile
94 6e18e03e 2004-04-11 devnull for writing as well as reading.
96 6e18e03e 2004-04-11 devnull .BI -I path
97 6e18e03e 2004-04-11 devnull Directory in which to look for relative path names in
101 6e18e03e 2004-04-11 devnull commands.
103 6e18e03e 2004-04-11 devnull .BI -m machine
104 6e18e03e 2004-04-11 devnull Assume instructions are for the given CPU type
105 6e18e03e 2004-04-11 devnull (possible names include
108 6e18e03e 2004-04-11 devnull .BR powerpc ;
110 6e18e03e 2004-04-11 devnull the suffix
113 6e18e03e 2004-04-11 devnull .B 386-co
115 6e18e03e 2004-04-11 devnull .B powerpc-co
116 6e18e03e 2004-04-11 devnull selects disassembly in the manufacturer's syntax, if
117 6e18e03e 2004-04-11 devnull available,
118 6e18e03e 2004-04-11 devnull rather than the default Plan 9 syntax).
122 6e18e03e 2004-04-11 devnull commands have the following form:
124 6e18e03e 2004-04-11 devnull .RI [ address ]
126 6e18e03e 2004-04-11 devnull .IR count ]
127 6e18e03e 2004-04-11 devnull .RI [ command ]
130 6e18e03e 2004-04-11 devnull .I address
131 6e18e03e 2004-04-11 devnull is present then the current position, called `dot',
132 6e18e03e 2004-04-11 devnull is set to
133 6e18e03e 2004-04-11 devnull .IR address .
134 6e18e03e 2004-04-11 devnull Initially dot
135 6e18e03e 2004-04-11 devnull is set to 0.
136 6e18e03e 2004-04-11 devnull Most commands are repeated
137 6e18e03e 2004-04-11 devnull .I count
138 6e18e03e 2004-04-11 devnull times with
139 6e18e03e 2004-04-11 devnull dot advancing between repetitions.
140 6e18e03e 2004-04-11 devnull The default
141 6e18e03e 2004-04-11 devnull .I count
143 6e18e03e 2004-04-11 devnull .I Address
145 6e18e03e 2004-04-11 devnull .I count
146 6e18e03e 2004-04-11 devnull are expressions.
147 6e18e03e 2004-04-11 devnull Multiple commands on one line must be separated by
149 6e18e03e 2004-04-11 devnull .SS Expressions
150 6e18e03e 2004-04-11 devnull Expressions are evaluated as long
151 6e18e03e 2004-04-11 devnull .IR ints .
152 6e18e03e 2004-04-11 devnull .TP 7.2n
154 6e18e03e 2004-04-11 devnull The value of dot.
155 6e18e03e 2004-04-11 devnull .TP 7.2n
157 6e18e03e 2004-04-11 devnull The value of dot
158 6e18e03e 2004-04-11 devnull incremented by the current increment.
159 6e18e03e 2004-04-11 devnull .TP 7.2n
161 6e18e03e 2004-04-11 devnull The value of dot
162 6e18e03e 2004-04-11 devnull decremented by the current increment.
163 6e18e03e 2004-04-11 devnull .TP 7.2n
165 6e18e03e 2004-04-11 devnull The last
166 6e18e03e 2004-04-11 devnull .I address
168 6e18e03e 2004-04-11 devnull .TP 7.2n
169 6e18e03e 2004-04-11 devnull .I integer
170 6e18e03e 2004-04-11 devnull A number, in decimal radix by default.
171 6e18e03e 2004-04-11 devnull The prefixes
177 6e18e03e 2004-04-11 devnull (zero oh) force interpretation
178 6e18e03e 2004-04-11 devnull in octal radix; the prefixes
182 6e18e03e 2004-04-11 devnull force interpretation in
183 6e18e03e 2004-04-11 devnull decimal radix; the prefixes
184 6e18e03e 2004-04-11 devnull .LR 0x ,
185 6e18e03e 2004-04-11 devnull .LR 0X ,
188 6e18e03e 2004-04-11 devnull force interpretation in
189 6e18e03e 2004-04-11 devnull hexadecimal radix.
191 6e18e03e 2004-04-11 devnull .LR 020 ,
192 6e18e03e 2004-04-11 devnull .LR 0o20 ,
193 6e18e03e 2004-04-11 devnull .LR 0t16 ,
196 6e18e03e 2004-04-11 devnull all represent sixteen.
197 6e18e03e 2004-04-11 devnull .TP 7.2n
198 6e18e03e 2004-04-11 devnull .IB integer . fraction
199 6e18e03e 2004-04-11 devnull A single-precision floating point number.
200 6e18e03e 2004-04-11 devnull .TP 7.2n
201 6e18e03e 2004-04-11 devnull .BI \' c\| \'
204 6e18e03e 2004-04-11 devnull value of a character.
206 6e18e03e 2004-04-11 devnull may be used to escape a
207 6e18e03e 2004-04-11 devnull .LR \' .
208 6e18e03e 2004-04-11 devnull .TP 7.2n
209 6e18e03e 2004-04-11 devnull .BI < name
210 6e18e03e 2004-04-11 devnull The value of
211 6e18e03e 2004-04-11 devnull .IR name ,
212 6e18e03e 2004-04-11 devnull which is a register name.
213 6e18e03e 2004-04-11 devnull The register names are
214 6e18e03e 2004-04-11 devnull those printed by the
216 6e18e03e 2004-04-11 devnull command.
217 6e18e03e 2004-04-11 devnull .TP 7.2n
218 6e18e03e 2004-04-11 devnull .I symbol
220 6e18e03e 2004-04-11 devnull .I symbol
221 6e18e03e 2004-04-11 devnull is a sequence
222 6e18e03e 2004-04-11 devnull of upper or lower case letters, underscores or
223 6e18e03e 2004-04-11 devnull digits, not starting with a digit.
225 6e18e03e 2004-04-11 devnull may be used to escape other characters.
226 6e18e03e 2004-04-11 devnull The location of the
227 6e18e03e 2004-04-11 devnull .I symbol
228 6e18e03e 2004-04-11 devnull is calculated from the symbol table
230 6e18e03e 2004-04-11 devnull .IR textfile .
231 6e18e03e 2004-04-11 devnull .TP 7.2n
232 6e18e03e 2004-04-11 devnull .IB routine . name
233 6e18e03e 2004-04-11 devnull The address of the variable
235 6e18e03e 2004-04-11 devnull in the specified
236 6e18e03e 2004-04-11 devnull C routine.
238 6e18e03e 2004-04-11 devnull .I routine
242 6e18e03e 2004-04-11 devnull .IR symbols .
245 6e18e03e 2004-04-11 devnull is omitted the value is the address of the
246 6e18e03e 2004-04-11 devnull most recently activated stack frame
247 6e18e03e 2004-04-11 devnull corresponding to
248 6e18e03e 2004-04-11 devnull .IR routine ;
250 6e18e03e 2004-04-11 devnull .I routine
251 6e18e03e 2004-04-11 devnull is omitted,
252 6e18e03e 2004-04-11 devnull the active procedure
253 6e18e03e 2004-04-11 devnull is assumed.
254 6e18e03e 2004-04-11 devnull .TP 7.2n
255 6e18e03e 2004-04-11 devnull .IB file : integer
256 6e18e03e 2004-04-11 devnull The address of the instruction corresponding
257 6e18e03e 2004-04-11 devnull to the source statement at the indicated
258 6e18e03e 2004-04-11 devnull line number of the file. If the source line contains
259 6e18e03e 2004-04-11 devnull no executable statement, the address of the
260 6e18e03e 2004-04-11 devnull instruction associated with the nearest
261 6e18e03e 2004-04-11 devnull executable source line is returned. Files
262 6e18e03e 2004-04-11 devnull begin at line 1. If multiple files of the same
263 6e18e03e 2004-04-11 devnull name are loaded, an expression of this form resolves
264 6e18e03e 2004-04-11 devnull to the first file encountered in the symbol table.
265 6e18e03e 2004-04-11 devnull .TP 7.2n
266 6e18e03e 2004-04-11 devnull .BI ( exp )
267 6e18e03e 2004-04-11 devnull The value of the expression
268 6e18e03e 2004-04-11 devnull .IR exp .
270 6e18e03e 2004-04-11 devnull .I Monadic operators
272 6e18e03e 2004-04-11 devnull .TP 7.2n
273 6e18e03e 2004-04-11 devnull .BI * exp
274 6e18e03e 2004-04-11 devnull The contents of the location addressed
278 6e18e03e 2004-04-11 devnull .IR memfile .
279 6e18e03e 2004-04-11 devnull .TP 7.2n
280 6e18e03e 2004-04-11 devnull .BI @ exp
281 6e18e03e 2004-04-11 devnull The contents of the location addressed by
284 6e18e03e 2004-04-11 devnull .IR textfile .
285 6e18e03e 2004-04-11 devnull .TP 7.2n
286 6e18e03e 2004-04-11 devnull .BI - exp
287 6e18e03e 2004-04-11 devnull Integer negation.
288 6e18e03e 2004-04-11 devnull .TP 7.2n
289 6e18e03e 2004-04-11 devnull .BI ~ exp
290 6e18e03e 2004-04-11 devnull Bitwise complement.
291 6e18e03e 2004-04-11 devnull .TP 7.2n
292 6e18e03e 2004-04-11 devnull .BI % exp
293 6e18e03e 2004-04-11 devnull When used as an
294 6e18e03e 2004-04-11 devnull .IR address ,
296 6e18e03e 2004-04-11 devnull is an offset into the segment named
297 6e18e03e 2004-04-11 devnull .IR ublock ;
298 6e18e03e 2004-04-11 devnull see `Addresses'.
301 6e18e03e 2004-04-11 devnull .I "Dyadic\ operators"
302 6e18e03e 2004-04-11 devnull are left-associative
303 6e18e03e 2004-04-11 devnull and are less binding than monadic operators.
305 6e18e03e 2004-04-11 devnull .TP 7.2n
306 6e18e03e 2004-04-11 devnull .IB e1 + e2
307 6e18e03e 2004-04-11 devnull Integer addition.
308 6e18e03e 2004-04-11 devnull .TP 7.2n
309 6e18e03e 2004-04-11 devnull .IB e1 - e2
310 6e18e03e 2004-04-11 devnull Integer subtraction.
311 6e18e03e 2004-04-11 devnull .TP 7.2n
312 6e18e03e 2004-04-11 devnull .IB e1 * e2
313 6e18e03e 2004-04-11 devnull Integer multiplication.
314 6e18e03e 2004-04-11 devnull .TP 7.2n
315 6e18e03e 2004-04-11 devnull .IB e1 % e2
316 6e18e03e 2004-04-11 devnull Integer division.
317 6e18e03e 2004-04-11 devnull .TP 7.2n
318 6e18e03e 2004-04-11 devnull .IB e1 & e2
319 6e18e03e 2004-04-11 devnull Bitwise conjunction.
320 6e18e03e 2004-04-11 devnull .TP 7.2n
321 6e18e03e 2004-04-11 devnull .IB e1 | e2
322 6e18e03e 2004-04-11 devnull Bitwise disjunction.
323 6e18e03e 2004-04-11 devnull .TP 7.2n
324 6e18e03e 2004-04-11 devnull .IB e1 # e2
326 6e18e03e 2004-04-11 devnull rounded up to the next multiple of
327 6e18e03e 2004-04-11 devnull .IR e2 .
330 6e18e03e 2004-04-11 devnull .SS Commands
331 6e18e03e 2004-04-11 devnull Most commands have the following syntax:
334 6e18e03e 2004-04-11 devnull Locations starting at
335 6e18e03e 2004-04-11 devnull .I address
337 6e18e03e 2004-04-11 devnull .I textfile
338 6e18e03e 2004-04-11 devnull are printed according to the format
342 6e18e03e 2004-04-11 devnull Locations starting at
343 6e18e03e 2004-04-11 devnull .I address
345 6e18e03e 2004-04-11 devnull .I memfile
346 6e18e03e 2004-04-11 devnull are printed according to the format
350 6e18e03e 2004-04-11 devnull The value of
351 6e18e03e 2004-04-11 devnull .I address
352 6e18e03e 2004-04-11 devnull itself is printed according to the format
356 6e18e03e 2004-04-11 devnull .I format
357 6e18e03e 2004-04-11 devnull consists of one or more characters that specify a style
358 6e18e03e 2004-04-11 devnull of printing.
359 6e18e03e 2004-04-11 devnull Each format character may be preceded by a decimal integer
360 6e18e03e 2004-04-11 devnull that is a repeat count for the format character.
361 6e18e03e 2004-04-11 devnull If no format is given then the last format is used.
363 6e18e03e 2004-04-11 devnull Most format letters fetch some data,
364 6e18e03e 2004-04-11 devnull print it,
365 6e18e03e 2004-04-11 devnull and advance (a local copy of) dot
366 6e18e03e 2004-04-11 devnull by the number of bytes fetched.
367 6e18e03e 2004-04-11 devnull The total number of bytes in a format becomes the
368 6e18e03e 2004-04-11 devnull .IR current increment .
369 6e18e03e 2004-04-11 devnull .ta 2.5n .5i
374 6e18e03e 2004-04-11 devnull Print two-byte integer in octal.
377 6e18e03e 2004-04-11 devnull Print four-byte integer in octal.
380 6e18e03e 2004-04-11 devnull Print two-byte integer in signed octal.
383 6e18e03e 2004-04-11 devnull Print four-byte integer in signed octal.
386 6e18e03e 2004-04-11 devnull Print two-byte integer in decimal.
389 6e18e03e 2004-04-11 devnull Print four-byte integer in decimal.
392 6e18e03e 2004-04-11 devnull Print eight-byte integer in decimal.
395 6e18e03e 2004-04-11 devnull Print eight-byte integer in unsigned decimal.
398 6e18e03e 2004-04-11 devnull Print two-byte integer in hexadecimal.
401 6e18e03e 2004-04-11 devnull Print four-byte integer in hexadecimal.
404 6e18e03e 2004-04-11 devnull Print eight-byte integer in hexadecimal.
407 6e18e03e 2004-04-11 devnull Print two-byte integer in unsigned decimal.
410 6e18e03e 2004-04-11 devnull Print four-byte integer in unsigned decimal.
414 6e18e03e 2004-04-11 devnull as a single-precision floating point number.
417 6e18e03e 2004-04-11 devnull Print double-precision floating point.
420 6e18e03e 2004-04-11 devnull Print the addressed byte in hexadecimal.
423 6e18e03e 2004-04-11 devnull Print the addressed byte as an
424 6e18e03e 2004-04-11 devnull .SM ASCII
425 6e18e03e 2004-04-11 devnull character.
428 6e18e03e 2004-04-11 devnull Print the addressed byte as a character.
429 6e18e03e 2004-04-11 devnull Printable
430 6e18e03e 2004-04-11 devnull .SM ASCII
431 6e18e03e 2004-04-11 devnull characters
432 6e18e03e 2004-04-11 devnull are represented normally; others
433 6e18e03e 2004-04-11 devnull are printed in the form
434 6e18e03e 2004-04-11 devnull .BR \exnn .
437 6e18e03e 2004-04-11 devnull Print the addressed characters, as a
439 6e18e03e 2004-04-11 devnull string, until a zero byte
440 6e18e03e 2004-04-11 devnull is reached.
441 6e18e03e 2004-04-11 devnull Advance dot
442 6e18e03e 2004-04-11 devnull by the length of the string,
443 6e18e03e 2004-04-11 devnull including the zero terminator.
446 6e18e03e 2004-04-11 devnull Print a string using
447 6e18e03e 2004-04-11 devnull the escape convention (see
452 6e18e03e 2004-04-11 devnull Print as
454 6e18e03e 2004-04-11 devnull the addressed two-byte integer (rune).
457 6e18e03e 2004-04-11 devnull Print as
459 6e18e03e 2004-04-11 devnull the addressed two-byte integers as runes
460 6e18e03e 2004-04-11 devnull until a zero rune is reached.
461 6e18e03e 2004-04-11 devnull Advance dot
462 6e18e03e 2004-04-11 devnull by the length of the string,
463 6e18e03e 2004-04-11 devnull including the zero terminator.
466 6e18e03e 2004-04-11 devnull Print as machine instructions. Dot is
467 6e18e03e 2004-04-11 devnull incremented by the size of the instruction.
472 6e18e03e 2004-04-11 devnull above, but print the machine instructions in
473 6e18e03e 2004-04-11 devnull an alternate form if possible.
476 6e18e03e 2004-04-11 devnull Print the addressed machine instruction in a
477 6e18e03e 2004-04-11 devnull machine-dependent hexadecimal form.
480 6e18e03e 2004-04-11 devnull Print the value of dot
481 6e18e03e 2004-04-11 devnull in symbolic form.
482 6e18e03e 2004-04-11 devnull Dot is unaffected.
485 6e18e03e 2004-04-11 devnull Print the value of dot
486 6e18e03e 2004-04-11 devnull in hexadecimal.
487 6e18e03e 2004-04-11 devnull Dot is unaffected.
490 6e18e03e 2004-04-11 devnull Print the function name, source file, and line number
491 6e18e03e 2004-04-11 devnull corresponding to dot (textfile only). Dot is unaffected.
494 6e18e03e 2004-04-11 devnull Print the addressed value in symbolic form.
495 6e18e03e 2004-04-11 devnull Dot is advanced by the size of a machine address.
498 6e18e03e 2004-04-11 devnull When preceded by an integer, tabs to the next
499 6e18e03e 2004-04-11 devnull appropriate tab stop.
500 6e18e03e 2004-04-11 devnull For example,
502 6e18e03e 2004-04-11 devnull moves to the next 8-space tab stop.
503 6e18e03e 2004-04-11 devnull Dot is unaffected.
506 6e18e03e 2004-04-11 devnull Print a newline.
507 6e18e03e 2004-04-11 devnull Dot is unaffected.
510 6e18e03e 2004-04-11 devnull .BR ' ... '
511 6e18e03e 2004-04-11 devnull Print the enclosed string.
512 6e18e03e 2004-04-11 devnull Dot is unaffected.
517 6e18e03e 2004-04-11 devnull Dot is decremented by the current increment.
518 6e18e03e 2004-04-11 devnull Nothing is printed.
521 6e18e03e 2004-04-11 devnull Dot is incremented by 1.
522 6e18e03e 2004-04-11 devnull Nothing is printed.
525 6e18e03e 2004-04-11 devnull Dot is decremented by 1.
526 6e18e03e 2004-04-11 devnull Nothing is printed.
530 6e18e03e 2004-04-11 devnull Other commands include:
533 6e18e03e 2004-04-11 devnull Update dot by the current increment.
534 6e18e03e 2004-04-11 devnull Repeat the previous command with a
535 6e18e03e 2004-04-11 devnull .I count
538 6e18e03e 2004-04-11 devnull .RB [ ?/ ] l "\fI value mask\fR"
539 6e18e03e 2004-04-11 devnull Words starting at dot
540 6e18e03e 2004-04-11 devnull are masked with
542 6e18e03e 2004-04-11 devnull and compared with
543 6e18e03e 2004-04-11 devnull .I value
545 6e18e03e 2004-04-11 devnull a match is found.
548 6e18e03e 2004-04-11 devnull is used,
549 6e18e03e 2004-04-11 devnull the match is for a two-byte integer;
551 6e18e03e 2004-04-11 devnull matches four bytes.
552 6e18e03e 2004-04-11 devnull If no match is found then dot
553 6e18e03e 2004-04-11 devnull is unchanged; otherwise dot
554 6e18e03e 2004-04-11 devnull is set to the matched location.
557 6e18e03e 2004-04-11 devnull is omitted then ~0 is used.
559 6e18e03e 2004-04-11 devnull .RB [ ?/ ] w "\fI value ...\fR"
560 6e18e03e 2004-04-11 devnull Write the two-byte
561 6e18e03e 2004-04-11 devnull .I value
562 6e18e03e 2004-04-11 devnull into the addressed
563 6e18e03e 2004-04-11 devnull location.
564 6e18e03e 2004-04-11 devnull If the command is
566 6e18e03e 2004-04-11 devnull write four bytes.
568 6e18e03e 2004-04-11 devnull .RB [ ?/ ] "m\fI s b e f \fP" [ ?\fR]
570 6e18e03e 2004-04-11 devnull New values for
571 6e18e03e 2004-04-11 devnull .RI ( b,\ e,\ f )
572 6e18e03e 2004-04-11 devnull in the segment named
574 6e18e03e 2004-04-11 devnull are recorded. Valid segment names are
575 6e18e03e 2004-04-11 devnull .IR text ,
576 6e18e03e 2004-04-11 devnull .IR data ,
578 6e18e03e 2004-04-11 devnull .IR ublock .
579 6e18e03e 2004-04-11 devnull If less than three address expressions are given,
580 6e18e03e 2004-04-11 devnull the remaining parameters are left unchanged.
581 6e18e03e 2004-04-11 devnull If the list is terminated by
585 6e18e03e 2004-04-11 devnull then the file
586 6e18e03e 2004-04-11 devnull .RI ( textfile
588 6e18e03e 2004-04-11 devnull .I memfile
589 6e18e03e 2004-04-11 devnull respectively) is used
590 6e18e03e 2004-04-11 devnull for subsequent requests.
591 6e18e03e 2004-04-11 devnull For example,
595 6e18e03e 2004-04-11 devnull to refer to
596 6e18e03e 2004-04-11 devnull .IR textfile .
598 6e18e03e 2004-04-11 devnull .BI > name
599 6e18e03e 2004-04-11 devnull Dot is assigned to the variable or register named.
602 6e18e03e 2004-04-11 devnull The rest of the line is passed to
603 6e18e03e 2004-04-11 devnull .IR rc (1)
604 6e18e03e 2004-04-11 devnull for execution.
606 6e18e03e 2004-04-11 devnull .BI $ modifier
607 6e18e03e 2004-04-11 devnull Miscellaneous commands.
608 6e18e03e 2004-04-11 devnull The available
609 6e18e03e 2004-04-11 devnull .I modifiers
615 6e18e03e 2004-04-11 devnull Read commands from the file
617 6e18e03e 2004-04-11 devnull If this command is executed in a file, further commands
618 6e18e03e 2004-04-11 devnull in the file are not seen.
621 6e18e03e 2004-04-11 devnull is omitted, the current input stream is terminated.
623 6e18e03e 2004-04-11 devnull .I count
624 6e18e03e 2004-04-11 devnull is given, and is zero, the command is ignored.
626 6e18e03e 2004-04-11 devnull .BI << f
627 6e18e03e 2004-04-11 devnull Similar to
629 6e18e03e 2004-04-11 devnull except it can be used in a file of commands without
630 6e18e03e 2004-04-11 devnull causing the file to be closed.
631 6e18e03e 2004-04-11 devnull There is a (small) limit to the number of
633 6e18e03e 2004-04-11 devnull files that can be open at once.
638 6e18e03e 2004-04-11 devnull Append output to the file
640 6e18e03e 2004-04-11 devnull which is created if it does not exist.
643 6e18e03e 2004-04-11 devnull is omitted, output is returned to the terminal.
646 6e18e03e 2004-04-11 devnull Print process id, the condition which caused stopping or termination,
647 6e18e03e 2004-04-11 devnull the registers and the instruction addressed by
648 6e18e03e 2004-04-11 devnull .BR pc .
649 6e18e03e 2004-04-11 devnull This is the default if
650 6e18e03e 2004-04-11 devnull .I modifier
651 6e18e03e 2004-04-11 devnull is omitted.
654 6e18e03e 2004-04-11 devnull Print the general registers and
655 6e18e03e 2004-04-11 devnull the instruction addressed by
656 6e18e03e 2004-04-11 devnull .BR pc .
657 6e18e03e 2004-04-11 devnull Dot is set to
658 6e18e03e 2004-04-11 devnull .BR pc .
662 6e18e03e 2004-04-11 devnull .BR $r ,
663 6e18e03e 2004-04-11 devnull but include miscellaneous processor control registers
664 6e18e03e 2004-04-11 devnull and floating point registers.
667 6e18e03e 2004-04-11 devnull Print floating-point register values as
668 6e18e03e 2004-04-11 devnull single-precision floating point numbers.
671 6e18e03e 2004-04-11 devnull Print floating-point register values as
672 6e18e03e 2004-04-11 devnull double-precision floating point numbers.
675 6e18e03e 2004-04-11 devnull Print all breakpoints
676 6e18e03e 2004-04-11 devnull and their associated counts and commands. `B' produces the same results.
679 6e18e03e 2004-04-11 devnull Stack backtrace.
681 6e18e03e 2004-04-11 devnull .I address
682 6e18e03e 2004-04-11 devnull is given, it specifies the address of a pair of 32-bit
683 6e18e03e 2004-04-11 devnull values containing the
687 6e18e03e 2004-04-11 devnull of an active process. This allows selecting
688 6e18e03e 2004-04-11 devnull among various contexts of a multi-threaded
689 6e18e03e 2004-04-11 devnull process.
692 6e18e03e 2004-04-11 devnull is used, the names and (long) values of all
693 6e18e03e 2004-04-11 devnull parameters,
694 6e18e03e 2004-04-11 devnull automatic
695 6e18e03e 2004-04-11 devnull and static variables are printed for each active function.
697 6e18e03e 2004-04-11 devnull .I count
698 6e18e03e 2004-04-11 devnull is given, only the first
699 6e18e03e 2004-04-11 devnull .I count
700 6e18e03e 2004-04-11 devnull frames are printed.
703 6e18e03e 2004-04-11 devnull Attach to the running process whose pid
704 6e18e03e 2004-04-11 devnull is contained in
705 6e18e03e 2004-04-11 devnull .IR address .
708 6e18e03e 2004-04-11 devnull The names and values of all
709 6e18e03e 2004-04-11 devnull external variables are printed.
712 6e18e03e 2004-04-11 devnull Set the page width for output to
713 6e18e03e 2004-04-11 devnull .I address
714 6e18e03e 2004-04-11 devnull (default 80).
717 6e18e03e 2004-04-11 devnull Exit from
718 6e18e03e 2004-04-11 devnull .IR db .
721 6e18e03e 2004-04-11 devnull Print the address maps.
724 6e18e03e 2004-04-11 devnull Simulate kernel memory management.
726 6e18e03e 2004-04-11 devnull .BI M machine
728 6e18e03e 2004-04-11 devnull .I machine
729 6e18e03e 2004-04-11 devnull type used for disassembling instructions.
733 6e18e03e 2004-04-11 devnull .BI : modifier
734 6e18e03e 2004-04-11 devnull Manage a subprocess.
735 6e18e03e 2004-04-11 devnull Available modifiers are:
741 6e18e03e 2004-04-11 devnull an asynchronously running process to allow breakpointing.
742 6e18e03e 2004-04-11 devnull Unnecessary for processes created under
743 6e18e03e 2004-04-11 devnull .IR db ,
745 6e18e03e 2004-04-11 devnull .BR :r .
748 6e18e03e 2004-04-11 devnull Set breakpoint at
749 6e18e03e 2004-04-11 devnull .IR address .
750 6e18e03e 2004-04-11 devnull The breakpoint is executed
751 6e18e03e 2004-04-11 devnull .IR count \-1
752 6e18e03e 2004-04-11 devnull times before
753 6e18e03e 2004-04-11 devnull causing a stop.
754 6e18e03e 2004-04-11 devnull Also, if a command
756 6e18e03e 2004-04-11 devnull is given it is executed at each
757 6e18e03e 2004-04-11 devnull breakpoint and if it sets dot to zero
758 6e18e03e 2004-04-11 devnull the breakpoint causes a stop.
761 6e18e03e 2004-04-11 devnull Delete breakpoint at
762 6e18e03e 2004-04-11 devnull .IR address .
766 6e18e03e 2004-04-11 devnull .I textfile
767 6e18e03e 2004-04-11 devnull as a subprocess.
769 6e18e03e 2004-04-11 devnull .I address
770 6e18e03e 2004-04-11 devnull is given the
771 6e18e03e 2004-04-11 devnull program is entered at that point; otherwise
772 6e18e03e 2004-04-11 devnull the standard entry point is used.
773 6e18e03e 2004-04-11 devnull .I Count
774 6e18e03e 2004-04-11 devnull specifies how many breakpoints are to be
775 6e18e03e 2004-04-11 devnull ignored before stopping.
776 6e18e03e 2004-04-11 devnull Arguments to the subprocess may be supplied on the
777 6e18e03e 2004-04-11 devnull same line as the command.
778 6e18e03e 2004-04-11 devnull An argument starting with < or > causes the standard
779 6e18e03e 2004-04-11 devnull input or output to be established for the command.
782 6e18e03e 2004-04-11 devnull The subprocess is continued.
785 6e18e03e 2004-04-11 devnull is omitted
786 6e18e03e 2004-04-11 devnull or nonzero,
787 6e18e03e 2004-04-11 devnull the subprocess
788 6e18e03e 2004-04-11 devnull is sent the note that caused it to stop.
790 6e18e03e 2004-04-11 devnull is specified,
791 6e18e03e 2004-04-11 devnull no note is sent.
792 6e18e03e 2004-04-11 devnull (If the stop was due to a breakpoint or single-step,
793 6e18e03e 2004-04-11 devnull the corresponding note is elided before continuing.)
794 6e18e03e 2004-04-11 devnull Breakpoint skipping is the same
801 6e18e03e 2004-04-11 devnull except that
802 6e18e03e 2004-04-11 devnull the subprocess is single stepped for
803 6e18e03e 2004-04-11 devnull .I count
804 6e18e03e 2004-04-11 devnull machine instructions.
805 6e18e03e 2004-04-11 devnull If a note is pending,
806 6e18e03e 2004-04-11 devnull it is received
807 6e18e03e 2004-04-11 devnull before the first instruction is executed.
808 6e18e03e 2004-04-11 devnull If there is no current subprocess then
809 6e18e03e 2004-04-11 devnull .I textfile
811 6e18e03e 2004-04-11 devnull as a subprocess as for
813 6e18e03e 2004-04-11 devnull In this case no note can be sent; the remainder of the line
814 6e18e03e 2004-04-11 devnull is treated as arguments to the subprocess.
817 6e18e03e 2004-04-11 devnull Identical to
819 6e18e03e 2004-04-11 devnull except the subprocess is single stepped for
820 6e18e03e 2004-04-11 devnull .I count
821 6e18e03e 2004-04-11 devnull lines of C source. In optimized code, the correspondence
822 6e18e03e 2004-04-11 devnull between C source and the machine instructions is
823 6e18e03e 2004-04-11 devnull approximate at best.
826 6e18e03e 2004-04-11 devnull The current subprocess, if any, is released by
828 6e18e03e 2004-04-11 devnull and allowed to continue executing normally.
831 6e18e03e 2004-04-11 devnull The current subprocess, if any, is terminated.
834 6e18e03e 2004-04-11 devnull Display the pending notes for the process.
837 6e18e03e 2004-04-11 devnull is specified, first delete
839 6e18e03e 2004-04-11 devnull pending note.
842 6e18e03e 2004-04-11 devnull .SS Addresses
843 6e18e03e 2004-04-11 devnull The location in a file or memory image associated with
844 6e18e03e 2004-04-11 devnull an address is calculated from a map
845 6e18e03e 2004-04-11 devnull associated with the file.
846 6e18e03e 2004-04-11 devnull Each map contains one or more quadruples
847 6e18e03e 2004-04-11 devnull .RI ( "t, f, b, e, o" ),
848 6e18e03e 2004-04-11 devnull defining a segment named
850 6e18e03e 2004-04-11 devnull (usually,
851 6e18e03e 2004-04-11 devnull .IR text ,
852 6e18e03e 2004-04-11 devnull .IR data ,
854 6e18e03e 2004-04-11 devnull .IR core )
857 6e18e03e 2004-04-11 devnull mapping addresses in the range
861 6e18e03e 2004-04-11 devnull to the part of the file
862 6e18e03e 2004-04-11 devnull beginning at
865 6e18e03e 2004-04-11 devnull If segments overlap, later segments obscure earlier ones.
866 6e18e03e 2004-04-11 devnull An address
868 6e18e03e 2004-04-11 devnull is translated
869 6e18e03e 2004-04-11 devnull to a file address
870 6e18e03e 2004-04-11 devnull by finding the last segment in the list
871 6e18e03e 2004-04-11 devnull for which
872 6e18e03e 2004-04-11 devnull .IR b ≤ a < e ;
873 6e18e03e 2004-04-11 devnull the location in the file
875 6e18e03e 2004-04-11 devnull .IR address + f \- b .
877 6e18e03e 2004-04-11 devnull Usually,
878 6e18e03e 2004-04-11 devnull the text and initialized data of a program
879 6e18e03e 2004-04-11 devnull are mapped by segments called
880 6e18e03e 2004-04-11 devnull .IR text ,
881 6e18e03e 2004-04-11 devnull .IR data ,
883 6e18e03e 2004-04-11 devnull .IR bss .
884 6e18e03e 2004-04-11 devnull Since a program file does not contain stack data,
885 6e18e03e 2004-04-11 devnull this data is
886 6e18e03e 2004-04-11 devnull not mapped.
887 6e18e03e 2004-04-11 devnull The text segment is mapped similarly in
888 6e18e03e 2004-04-11 devnull a normal (i.e., non-kernel)
889 6e18e03e 2004-04-11 devnull .IR memfile .
890 6e18e03e 2004-04-11 devnull However, one or more segments called
892 6e18e03e 2004-04-11 devnull provide access to process memory.
893 6e18e03e 2004-04-11 devnull This region contains the program's static data, the bss, the
894 6e18e03e 2004-04-11 devnull heap and the stack.
896 6e18e03e 2004-04-11 devnull Sometimes it is useful to define a map with a single segment
897 6e18e03e 2004-04-11 devnull mapping the region from 0 to 0xFFFFFFFF; a map of this type
898 6e18e03e 2004-04-11 devnull allows an entire file to be examined
899 6e18e03e 2004-04-11 devnull without address translation.
903 6e18e03e 2004-04-11 devnull command dumps the currently active maps. The
907 6e18e03e 2004-04-11 devnull commands modify the segment parameters in the
908 6e18e03e 2004-04-11 devnull .I textfile
910 6e18e03e 2004-04-11 devnull .I memfile
911 6e18e03e 2004-04-11 devnull maps, respectively.
912 6e18e03e 2004-04-11 devnull .SH EXAMPLES
913 6e18e03e 2004-04-11 devnull To set a breakpoint at the beginning of
914 6e18e03e 2004-04-11 devnull .B write()
915 6e18e03e 2004-04-11 devnull in extant process 27:
932 6e18e03e 2004-04-11 devnull To set a breakpoint at the entry of function
933 6e18e03e 2004-04-11 devnull .B parse
934 6e18e03e 2004-04-11 devnull when the local variable
938 6e18e03e 2004-04-11 devnull is equal to 1:
941 6e18e03e 2004-04-11 devnull parse:b *main.argc-1=X
944 6e18e03e 2004-04-11 devnull This prints the value of
945 6e18e03e 2004-04-11 devnull .B argc-1
946 6e18e03e 2004-04-11 devnull which as a side effect sets dot; when
948 6e18e03e 2004-04-11 devnull is one the breakpoint will fire.
949 6e18e03e 2004-04-11 devnull Beware that local variables may be stored in registers; see the
950 6e18e03e 2004-04-11 devnull BUGS section.
951 6e18e03e 2004-04-11 devnull .SH "SEE ALSO"
952 6e18e03e 2004-04-11 devnull .IR 9nm (1),
953 6e18e03e 2004-04-11 devnull .IR acid (1)
954 6e18e03e 2004-04-11 devnull .SH SOURCE
955 b5fdffee 2004-04-19 devnull .B /usr/local/plan9/src/cmd/db
956 6e18e03e 2004-04-11 devnull .SH DIAGNOSTICS
957 6e18e03e 2004-04-11 devnull Exit status is 0, unless the last command failed or
958 6e18e03e 2004-04-11 devnull returned non-zero status.
959 6e18e03e 2004-04-11 devnull .SH BUGS
960 6e18e03e 2004-04-11 devnull Examining a local variable with
961 6e18e03e 2004-04-11 devnull .I routine.name
962 6e18e03e 2004-04-11 devnull returns the contents of the memory allocated for the variable, but
963 6e18e03e 2004-04-11 devnull with optimization, variables often reside in registers.
964 6e18e03e 2004-04-11 devnull Also, on some architectures, the first argument is always
965 6e18e03e 2004-04-11 devnull passed in a register.
967 6e18e03e 2004-04-11 devnull Variables and parameters that have been
968 6e18e03e 2004-04-11 devnull optimized away do not appear in the
969 6e18e03e 2004-04-11 devnull symbol table, returning the error
970 6e18e03e 2004-04-11 devnull .IR "bad local variable"
971 6e18e03e 2004-04-11 devnull when accessed by
972 6e18e03e 2004-04-11 devnull .IR db .
974 6e18e03e 2004-04-11 devnull Breakpoints should not be set on instructions scheduled
975 6e18e03e 2004-04-11 devnull in delay slots. When a program stops on such a breakpoint,
976 6e18e03e 2004-04-11 devnull it is usually impossible to continue its execution.