|
|
1.1 root 1: .\" Copyright (c) 1980 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)sdb.1 6.1 (Berkeley) 4/29/85
6: .\"
7: .TH SDB 1 "4/29/85"
8: .UC 4
9: .SH NAME
10: sdb \- symbolic debugger
11: .SH SYNOPSIS
12: .B sdb
13: [ objfil [ corfil [ directory ] ] ]
14: .SH DESCRIPTION
15: .I Sdb
16: is a symbolic debugger which can be used with C, PASCAL, and F77 programs.
17: It may be used to examine their files and to provide
18: a controlled environment for their execution.
19: .PP
20: .I Objfil
21: is an executable program file
22: which has been compiled with the \-g (debug) option.
23: The default for
24: .I objfil
25: is
26: .B a.out.
27: .I Corfil
28: is assumed to be a core image file produced after
29: executing
30: .IR objfil ;
31: the default for
32: .I corfil
33: is
34: .B core.
35: The core file need not be present.
36: .PP
37: It is useful to know that at any time there is a
38: .I "current line"
39: and
40: .I "current file."
41: If
42: .I corfil
43: exists then they are initially set to the line and file
44: containing the source statement at which the process terminated or stopped.
45: Otherwise, they are set to the first line in main.
46: The current line and file may be changed with the source file
47: examination commands.
48: .PP
49: Names of variables are written just as they are in C, PASCAL, or F77.
50: Variables local to a procedure may be accessed using the form
51: `procedure:variable'.
52: If no procedure name is given, the procedure containing the
53: current line is used by default.
54: It is also possible to refer to structure members as `variable.member',
55: pointers to structure members as `variable\(mi>member' and array elements
56: as `variable[number]'.
57: Combinations of these forms may also be used.
58: .PP
59: It is also possible to specify a variable by its address.
60: All forms of integer constants which are valid in C may be used, so that
61: addresses may be input in decimal, octal or hexadecimal.
62: .PP
63: Line numbers in the source program are referred to as `filename:number'
64: or `procedure:number'.
65: In either case the number is relative to the beginning of the file.
66: If no procedure or file name is given,
67: the current file is used by default.
68: If no number is given,
69: the first line of the named procedure or file is used.
70: .sp 1
71: .PP
72: The commands for examining data in the program are:
73: .TP 5
74: .B t
75: Print a stack trace of the terminated or stopped program.
76: .TP 5
77: .B T
78: Print the top line of the stack trace.
79: .TP 5
80: variable/\fIlm\fP
81: Print the value of variable according to
82: length
83: .I l
84: and format
85: .I m.
86: If
87: .I l
88: and
89: .I m
90: are omitted,
91: sdb chooses a length and format suitable for the variable's type
92: as declared in the program.
93: The length specifiers are:
94: .RS
95: .TP
96: .BI b
97: one byte
98: .br
99: .ns
100: .TP
101: .BI h
102: two bytes (half word)
103: .br
104: .ns
105: .TP
106: .BI l
107: four bytes (long word)
108: .br
109: .ns
110: .TP
111: number
112: string length for formats
113: .B s
114: and
115: .B a
116: .RE
117: .TP 5
118: \
119: Legal values for
120: .I m
121: are:
122: .RS
123: .TP
124: .BI c
125: character
126: .br
127: .ns
128: .TP
129: .BI d
130: decimal
131: .br
132: .ns
133: .TP
134: .BI u
135: decimal, unsigned
136: .br
137: .ns
138: .TP
139: .BI o
140: octal
141: .br
142: .ns
143: .TP
144: .BI x
145: hexadecimal
146: .br
147: .ns
148: .TP
149: .BI f
150: 32 bit single precision floating point
151: .br
152: .ns
153: .TP
154: .BI g
155: 64 bit double precision floating point
156: .br
157: .ns
158: .TP
159: .BI s
160: Assume variable is a string pointer and print characters until a null is
161: reached.
162: .br
163: .ns
164: .TP
165: .BI a
166: Print characters starting at the variable's address until a null
167: is reached.
168: .br
169: .ns
170: .TP
171: .BI p
172: pointer to procedure
173: .RE
174: .TP 5
175: \
176: The length specifiers are only effective with the formats
177: \fBd\fP, \fBu\fP, \fBo\fP and \fBx\fP.
178: If
179: one of these formats
180: is specified and
181: .I l
182: is omitted,
183: the length
184: defaults to the word length of the host machine;
185: 4 for the DEC VAX/11-780.
186: The last variable may be redisplayed with the command `./'.
187: .sp
188: The sh(1) metacharacters
189: .B *
190: and
191: .B ?
192: may be used within procedure and variable names,
193: providing a limited form of pattern matching.
194: If no procedure name is given, both variables local to the current
195: procedure and global (common for F77) variables are matched,
196: while if a procedure name is specified then
197: only variables local to that procedure and matched.
198: To match only global variables (or blank common for F77),
199: the form `:pattern' is used.
200: The name of a common block may be specified instead of a procedure name
201: for F77 programs.
202: .RE
203: .TP 5
204: variable\fB=\fP\fIlm\fP
205: .br
206: .ns
207: .TP 5
208: linenumber\fB=\fP\fIlm\fP
209: .br
210: .ns
211: .TP 5
212: number\fB=\fP\fIlm\fP
213: Print the address of the variable or line number or the value of the number
214: in the specified format.
215: If no format is given, then `lx' is used.
216: The last variant of this command provides a convenient way to convert
217: between decimal, octal and hexadecimal.
218: .TP 5
219: variable\fB!\fPvalue
220: Set the variable to the given value.
221: The value may be a number, character constant or a variable.
222: If the variable is of type float or double,
223: the value may also be a floating constant.
224: .sp 1
225: .PP
226: The commands for examining source files are
227: .TP 5
228: \fBe\fP procedure
229: .br
230: .ns
231: .TP 5
232: \fBe\fP filename.c
233: Set the current file to
234: the file containing the named procedure
235: or the named filename.
236: Set the current line to the first line in the named
237: procedure or file.
238: All source files are assumed to be in
239: .I directory.
240: The default for
241: .I directory
242: is the working directory.
243: If no procedure or file name is given, the current procedure and file names
244: are reported.
245: .TP 5
246: \fB/\fPregular expression\fB/\fP
247: Search forward from the current line for a line containing
248: a string matching the regular expression as in ed(1).
249: The trailing `/' may be elided.
250: .TP 5
251: \fB?\fPregular expression\fB?\fP
252: Search backward from the current line for a line containing
253: a string matching the regular expression as in ed(1).
254: The trailing `?' may be elided.
255: .TP 5
256: .B p
257: Print the current line.
258: .TP 5
259: .B z
260: Print the current line followed by the next 9 lines.
261: Set the current line to the last line printed.
262: .TP 5
263: .B control-D
264: Scroll.
265: Print the next 10 lines.
266: Set the current line to the last line printed.
267: .TP 5
268: .B w
269: Window.
270: Print the 10 lines around the current line.
271: .TP 5
272: number
273: Set the current line to the given line number.
274: Print the new current line.
275: .TP 5
276: \fIcount\fB +\fR
277: Advance the current line by \fIcount\fP lines.
278: Print the new current line.
279: .TP 5
280: \fIcount\fB \(mi\fR
281: Retreat the current line by \fIcount\fP lines.
282: Print the new current line.
283: .sp 1
284: .PP
285: The commands for controlling the execution of the source program are:
286: .TP 5
287: \fIcount\fB r \fIargs\fR
288: .br
289: .ns
290: .TP 5
291: \fIcount\fB R
292: Run the program with the given arguments.
293: The \fBr\fP command with no arguments reuses the previous arguments
294: to the program while the \fBR\fP command
295: runs the program with no arguments.
296: An argument beginning with `<' or `>' causes redirection for the
297: standard input or output respectively.
298: If \fIcount\fP is given,
299: it specifies the number of breakpoints to be ignored.
300: .TP 5
301: \fIlinenumber\fB c\fI count\fR
302: .br
303: .ns
304: .TP 5
305: \fIlinenumber\fB C\fI count\fR
306: Continue after a breakpoint or interrupt.
307: If \fIcount\fP is given,
308: it specifies the number of breakpoints to be ignored.
309: \fBC\fP continues with the signal which caused the program to stop and
310: \fBc\fP ignores it.
311: .sp 0.5
312: If a linenumber is specified
313: then a temporary breakpoint is placed at the line
314: and execution is continued.
315: The breakpoint is deleted when the command finishes.
316: .TP 5
317: \fIcount\fB s\fR
318: Single step.
319: Run the program through \fIcount\fP lines.
320: If no count is given then the program is run for one line.
321: .TP 5
322: \fIcount\fB S\fR
323: Single step, but step through subroutine calls.
324: .TP 5
325: .B k
326: Kill the debugged program.
327: .TP 5
328: procedure\fB(\fParg1,arg2,...\fB)\fP
329: .br
330: .ns
331: .TP 5
332: procedure\fB(\fParg1,arg2,...\fB)/\fP\fIm\fP
333: Execute the named procedure with the given arguments.
334: Arguments can be integer, character or string constants
335: or names of variables accessible from the current procedure.
336: The second form causes the value returned by the procedure to be
337: printed according to format \fIm\fP.
338: If no format is given, it defaults to `d'.
339: .TP 5
340: \fIlinenumber\fB b\fR \fIcommands\fR
341: Set a breakpoint at the given line.
342: If a procedure name without a line number is given (e.g. `proc:'),
343: a breakpoint is placed at the first line in the procedure
344: even if it was not compiled with the debug flag.
345: If no \fIlinenumber\fP is given,
346: a breakpoint is placed at the current line.
347: .sp 0.5
348: If no
349: .I commands
350: are given then execution stops just before the breakpoint
351: and control is returned to sdb.
352: Otherwise
353: the
354: .I commands
355: are executed when the breakpoint is
356: encountered and execution continues.
357: Multiple commands are specified by separating them with semicolons.
358: .TP 5
359: \fIlinenumber\fB d\fR
360: Delete a breakpoint at the given line.
361: If no \fIlinenumber\fP is given then the breakpoints are deleted interactively:
362: Each breakpoint location is printed and a line is read from the standard input.
363: If the line begins with a `y' or `d' then the breakpoint is deleted.
364: .TP 5
365: .B B
366: Print a list of the currently active breakpoints.
367: .TP 5
368: .B D
369: Delete all breakpoints.
370: .TP 5
371: l
372: Print the last executed line.
373: .TP 5
374: \fIlinenumber\fB a\fR
375: Announce.
376: If \fIlinenumber\fR is of the form `proc:number', the command
377: effectively does a `linenumber b l'.
378: If \fIlinenumber\fR is of the form `proc:', the command
379: effectively does a `proc: b T'.
380: .sp 1
381: .PP
382: Miscellaneous commands.
383: .TP 5
384: \fB! \fIcommand\fR
385: The command is interpreted by sh(1).
386: .TP 5
387: .B newline
388: If the previous command printed a source line then
389: advance the current line by 1 line and
390: print the new current line.
391: If the previous command displayed a core location then
392: display the next core location.
393: .TP 5
394: \fB"\fI string\fR
395: Print the given string.
396: .TP 5
397: .B q
398: Exit the debugger.
399: .sp 1
400: .PP
401: The following commands also exist and are intended only for
402: debugging the debugger.
403: .TP 5
404: .B V
405: Print the version number.
406: .TP 5
407: .B X
408: Print a list of procedures and files being debugged.
409: .TP 5
410: .B Y
411: Toggle debug output.
412: .SH FILES
413: a.out
414: .br
415: core
416: .SH SEE\ ALSO
417: adb(1)
418: .SH DIAGNOSTICS
419: Error reports are either identical to those of adb(1) or are
420: self-explanatory.
421: .SH BUGS
422: If a procedure is called when the program is
423: .I not
424: stopped at a breakpoint
425: (such as when a core image is being debugged),
426: all variables are initialized before the procedure is started.
427: This makes it impossible to use a procedure which formats
428: data from a core image.
429: .PP
430: Arrays must be of one dimension and of zero origin to be correctly
431: addressed by sdb.
432: .PP
433: The default type for printing F77 parameters is incorrect.
434: Their address is printed instead of their value.
435: .PP
436: Tracebacks containing F77 subprograms with multiple entry points
437: may print too many arguments in the wrong order, but their values
438: are correct.
439: .PP
440: Sdb understands Pascal, but not its types.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.