|
|
1.1 root 1: .\" Copyright (c) 1983 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: .\" @(#)pdx.1 6.1 (Berkeley) 4/29/85
6: .\"
7: .TH PDX 1 "April 29, 1985"
8: .UC 5
9: .SH NAME
10: pdx \- pascal debugger
11: .SH SYNOPSIS
12: pdx [\fB\-r\fP] [\fIobjfile\fP]
13: .SH DESCRIPTION
14: \fIPdx\fP is a tool for source level debugging and execution of
15: Pascal programs.
16: The \fIobjfile\fP is an object file produced by the Pascal translator
17: \fIpi\fP(1). If no \fIobjfile\fP is specified, \fIpdx\fP looks
18: for a file named ``obj'' in the current directory.
19: The object file contains a symbol table which includes the name of the
20: all the source files translated by \fIpi\fP to create it.
21: These files are available for perusal while using the debugger.
22: .PP
23: If the file ``.pdxinit'' exists in the current directory, then the
24: debugger commands in it are executed.
25: .PP
26: The \fB\-r\fP option causes the \fIobjfile\fP to be executed immediately;
27: if it terminates successfully \fIpdx\fP exits.
28: Otherwise it reports the reason for termination
29: and offers the user the option of entering the debugger
30: or simply letting \fIpx\fP continue with a traceback.
31: If \fB\-r\fP is not specified, \fIpdx\fP just prompts and waits for a command.
32: .PP
33: The commands are:
34: .TP
35: \fBrun\fP [\fIargs\fP] [\fB<\fP \fIfilename\fP] [\fB>\fP \fIfilename\fP]
36: Start executing \fIobjfile\fP, passing \fIargs\fP as command line arguments;
37: \fB<\fP or \fB>\fP can be used to redirect input or output in the usual manner.
38: .TP
39: \fBtrace\fP [\fBin\fP \fIprocedure/function\fP] [\fBif\fP \fIcondition\fP]
40: .ns
41: .TP
42: \fBtrace\fP \fIsource-line-number\fP [\fBif\fP \fIcondition\fP]
43: .ns
44: .TP
45: \fBtrace\fP \fIprocedure/function\fP [\fBin\fP \fIprocedure/function\fP] [\fBif\fP \fIcondition\fP]
46: .ns
47: .TP
48: \fBtrace\fP \fIexpression\fP \fBat\fP \fIsource-line-number\fP [\fBif\fP \fIcondition\fP]
49: .ns
50: .TP
51: \fBtrace\fP \fIvariable\fP [\fBin\fP \fIprocedure/function\fP] [\fBif\fP \fIcondition\fP]
52: Have tracing information printed when the program is executed.
53: A number is associated with the command that is used
54: to turn the tracing off (see the \fBdelete\fP command).
55: .sp 1
56: The first argument describes what is to be traced.
57: If it is a \fIsource-line-number\fP, then the line is printed
58: immediately prior to being executed.
59: Source line numbers in a file other than the current one
60: must be preceded by the name of the file and a colon, e.g.
61: ``mumble.p:17''.
62: .sp 1
63: If the argument is a procedure or function name then
64: every time it is called, information is printed telling
65: what routine called it, from what source line it was called,
66: and what parameters were passed to it.
67: In addition, its return is noted, and if it's a function
68: then the value it is returning is also printed.
69: .sp 1
70: If the argument is an \fIexpression\fP with an \fBat\fP clause
71: then the value of the expression is printed whenever the
72: identified source line is reached.
73: .sp 1
74: If the argument is a variable then the name and value of the variable
75: is printed whenever it changes.
76: Execution is substantially slower during this form of tracing.
77: .sp 1
78: If no argument is specified then all source lines are printed
79: before they are executed.
80: Execution is substantially slower during this form of tracing.
81: .sp 1
82: The clause ``\fBin\fP \fIprocedure/function\fP'' restricts tracing information
83: to be printed only while executing inside the given procedure
84: or function.
85: .sp 1
86: \fICondition\fP is a Pascal boolean expression and is
87: evaluated prior to printing the tracing information;
88: if it is false then the information is not printed.
89: .sp 1
90: There is no restriction on the amount of information
91: that can be traced.
92: .br
93: .ne 10
94: .IP "\fBstop\fP \fBif\fP \fIcondition\fP"
95: .ns
96: .IP "\fBstop\fP \fBat\fP \fIsource-line-number\fP [\fBif\fP \fIcondition\fP]"
97: .ns
98: .IP "\fBstop\fP \fBin\fP \fIprocedure/function\fP [\fBif\fP \fIcondition\fP]"
99: .ns
100: .IP "\fBstop\fP \fIvariable\fP [\fBif\fP \fIcondition\fP]"
101: Stop execution when the given line is reached, procedure or function
102: called, variable changed, or condition true.
103: .IP "\fBdelete\fP \fIcommand-number\fP"
104: The trace or stop corresponding to the given number is removed.
105: The numbers associated with traces and stops are printed by
106: the \fBstatus\fP command.
107: .IP "\fBstatus\fP [\fB>\fP \fIfilename\fP]"
108: Print out
109: the currently active \fBtrace\fP and \fBstop\fP commands.
110: .IP \fBcont\fP
111: Continue execution from where it stopped.
112: This can only be
113: done when the program was stopped by an interrupt
114: or through use of the \fBstop\fP command.
115: .IP \fBstep\fP
116: Execute one source line.
117: .IP \fBnext\fP
118: Execute up to the next source line.
119: The difference between this and \fBstep\fP is that
120: if the line contains a call to a procedure or function
121: the \fBstep\fP command will stop at the beginning of that
122: block, while the \fBnext\fP command will not.
123: .IP "\fBprint\fP \fIexpression\fP [\fB,\fP \fIexpression\fP ...]"
124: Print out the values of the Pascal expressions.
125: Variables declared in an outer block but having
126: the same identifier as one in the current block may be
127: referenced as ``\fIblock-name\fP\ \fB.\fP\ \fIvariable\fP''.
128: .IP "\fBwhatis\fP \fIidentifier\fP"
129: Print the declaration of the given identifier.
130: .IP "\fBwhich\fP \fIidentifier\fP"
131: Print the full qualification of the given identifer, i.e.
132: the outer blocks that the identifier is associated with.
133: .IP "\fBassign\fP \fIvariable\fP \fIexpression\fP"
134: Assign the value of the expression to the variable.
135: .IP "\fBcall\fP \fIprocedure(parameters)\fP"
136: Execute the object code associated with the named procedure or function.
137: .IP \fBhelp\fP
138: Print out a synopsis of \fIpdx\fP commands.
139: .IP \fBgripe\fP
140: Invokes a mail program to send a message to the person in charge of \fIpdx\fP.
141: .IP \fBwhere\fP
142: Print out
143: a list of the active procedures and functions and the respective source
144: line where they are called.
145: .TP
146: \fBsource\fP \fIfilename\fP
147: Read \fIpdx\fP commands from the given \fIfilename\fP.
148: Especially useful when the \fIfilename\fP has been created by redirecting
149: a \fBstatus\fP command from an earlier debugging session.
150: .IP "\fBdump\fP [\fB>\fP \fIfilename\fP]"
151: Print the names and values of all active
152: data.
153: .IP "\fBlist\fP [\fIsource-line-number\fP [\fB,\fP \fIsource-line-number\fP]]"
154: .ns
155: .IP "\fBlist\fP \fIprocedure/function\fP"
156: List the lines in the current source file from the first line number to
157: the second inclusive.
158: As in the editor
159: ``$'' can be used to refer to the last line.
160: If no lines are specified, the entire file is listed.
161: If the name of a procedure or function is given
162: lines \fIn-k\fP to \fIn+k\fP are listed where \fIn\fP is the first statement
163: in the procedure or function and \fIk\fP is small.
164: .IP "\fBfile\fP [\fIfilename\fP]"
165: Change the current source file name to \fIfilename\fP.
166: If none is specified then the current source file name is printed.
167: .IP "\fBedit\fP [\fIfilename\fP]"
168: .ns
169: .IP "\fBedit\fP \fIprocedure/function-name\fP"
170: Invoke an editor on \fIfilename\fP or the current source file if none
171: is specified.
172: If a \fIprocedure\fP or \fIfunction\fP name is specified,
173: the editor is invoked on the file that contains it.
174: Which editor is invoked by default depends on the installation.
175: The default can be overridden by setting the environment variable
176: EDITOR to the name of the desired editor.
177: .IP \fBpi\fP
178: Recompile the program and read in the new symbol table information.
179: .IP "\fBsh\fP \fIcommand-line\fP"
180: Pass the command line to the shell for execution.
181: The SHELL environment variable determines which shell is used.
182: .IP "\fBalias\fP \fInew-command-name\fP \fIold-command-name\fP"
183: This command makes \fIpdx\fP respond to \fInew-command-name\fP
184: the way it used to respond to \fIold-command-name\fP.
185: .IP "\fBquit\fP"
186: Exit \fIpdx\fP.
187: .sp 4
188: .PP
189: The following commands deal with the program at the \fIpx\fP instruction
190: level rather than source level.
191: They are not intended for general use.
192: .TP
193: \fBtracei\fP [\fIaddress\fP] [\fBif\fP \fIcond\fP]
194: .ns
195: .TP
196: \fBtracei\fP [\fIvariable\fP] [\fBat\fP \fIaddress\fP] [\fBif\fP \fIcond\fP]
197: .ns
198: .TP
199: \fBstopi\fP [\fIaddress\fP] [\fBif\fP \fIcond\fP]
200: .ns
201: .TP
202: \fBstopi\fP [\fBat\fP] [\fIaddress\fP] [\fBif\fP \fIcond\fP]
203: Turn on tracing or set a stop using a \fIpx\fP machine
204: instruction addresses.
205: .TP
206: \fBxi\fP \fIaddress\fP [\fB,\fP \fIaddress\fP]
207: Print the instructions starting at the first \fIaddress\fP.
208: Instructions up to
209: the second \fIaddress\fP are printed.
210: .TP
211: \fBxd\fP \fIaddress\fP [\fB,\fP \fIaddress\fP]
212: Print in octal the specified data location(s).
213: .SH FILES
214: .nr In 25
215: .in +\n(Inn
216: .ta \n(Inn
217: .br
218: .nr wg 1v
219: .ie \n(.h=\n(vk .nr wg -\n(vhu
220: .el .nr vh 0
221: .if \n(wg>0 \{\
222: .sp \n(wgu
223: .nr vh +\n(wgu \}
224: .nr vk \n(.h
225: .ti -\n(Inn
226: \&obj \c
227: Pascal object file
228: .br
229: .nr wg 0v
230: .ie \n(.h=\n(vk .nr wg -\n(vhu
231: .el .nr vh 0
232: .if \n(wg>0 \{\
233: .sp \n(wgu
234: .nr vh +\n(wgu \}
235: .nr vk \n(.h
236: .ti -\n(Inn
237: \&\&.pdxinit \c
238: \fIPdx\fP initialization file
239: .in -\n(Inn
240: .br
241: .nr wg 1v
242: .ie \n(.h=\n(vk .nr wg -\n(vhu
243: .el .nr vh 0
244: .if \n(wg>0 \{\
245: .sp \n(wgu
246: .nr vh +\n(wgu \}
247: .nr vk \n(.h
248: .SH SEE ALSO
249: pi(1), px(1)
250: .br
251: \fIAn Introduction to Pdx\fP
252: .SH BUGS
253: \fIPdx\fP does not understand sets,
254: and provides no information about files.
255: .sp 1
256: The \fIwhatis\fP command doesn't quite work for variant records.
257: .sp 1
258: Bad things will happen if a procedure invoked with
259: the \fBcall\fP command does a non-local goto.
260: .sp 1
261: The commands \fBstep\fP and \fBnext\fP should be able to take a \fIcount\fP
262: that specifies how many lines to execute.
263: .sp 1
264: There should be commands \fBstepi\fP and \fBnexti\fP that correspond
265: to \fBstep\fP and \fBnext\fP but work at the instruction level.
266: .sp 1
267: There should be a way to get an address associated with
268: a line number, procedure or function, and variable.
269: .sp 1
270: Most of the command names are too long.
271: .sp 1
272: The alias facility is quite weak.
273: .sp 1
274: A \fIcsh\fP-like history capability would improve the situation.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.