Annotation of 43BSDReno/pgrm/pascal/pdx/pdx.1, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1983, 1990 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted provided
                      5: .\" that: (1) source distributions retain this entire copyright notice and
                      6: .\" comment, and (2) distributions including binaries display the following
                      7: .\" acknowledgement:  ``This product includes software developed by the
                      8: .\" University of California, Berkeley and its contributors'' in the
                      9: .\" documentation or other materials provided with the distribution and in
                     10: .\" all advertising materials mentioning features or use of this software.
                     11: .\" Neither the name of the University nor the names of its contributors may
                     12: .\" be used to endorse or promote products derived from this software without
                     13: .\" specific prior written permission.
                     14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     17: .\"
                     18: .\"     @(#)pdx.1      6.2 (Berkeley) 6/11/90
                     19: .\"
                     20: .Dd June 11, 1990
                     21: .Dt PDX 1
                     22: .Os BSD 4.2
                     23: .Sh NAME
                     24: .Nm pdx
                     25: .Nd pascal debugger
                     26: .Sh SYNOPSIS
                     27: .Nm pdx
                     28: .Op Fl r
                     29: .Op Ar objfile
                     30: .Sh DESCRIPTION
                     31: .Nm Pdx
                     32: is a tool for source level debugging and execution of
                     33: Pascal programs.
                     34: The
                     35: .Ar objfile
                     36: is an object file produced by the Pascal translator
                     37: .Xr pi 1 .
                     38: If no
                     39: .Ar objfile
                     40: is specified,
                     41: .Nm pdx
                     42: looks
                     43: for a file named ``obj'' in the current directory.
                     44: The object file contains a symbol table which includes the name of the
                     45: all the source files translated by
                     46: .Xr pi 1
                     47: to create it.
                     48: These files are available for perusal while using the debugger.
                     49: .Pp
                     50: If the file
                     51: .Dq Pa .pdxinit
                     52: exists in the current directory, then the
                     53: debugger commands in it are executed.
                     54: .Pp
                     55: .Tp Fl r
                     56: The
                     57: .Fl r
                     58: option causes the
                     59: .Ar objfile
                     60: to be executed immediately;
                     61: if it terminates successfully
                     62: .Nm pdx
                     63: exits.
                     64: Otherwise it reports the reason for termination
                     65: and offers the user the option of entering the debugger
                     66: or simply letting
                     67: .Xr px
                     68: continue with a traceback.
                     69: If
                     70: .Fl r
                     71: is not specified,
                     72: .Nm pdx
                     73: just prompts and waits for a command.
                     74: .Tp
                     75: .Pp
                     76: The commands are:
                     77: .Dw Fl
                     78: .Di L
                     79: .Dp Cx Ic run
                     80: .Cx \&\ \&
                     81: .Op Ar args
                     82: .Cx \&\ \&
                     83: .Op Ic \&< Ar filename
                     84: .Cx \&\ \&
                     85: .Op Ic \&> Ar filename
                     86: .Cx
                     87: Start executing
                     88: .Ar objfile  ,
                     89: passing
                     90: .Ar args
                     91: as command line arguments;
                     92: .Ic \&<
                     93: or
                     94: .Ic \&>
                     95: can be used to redirect input or output in the usual manner.
                     96: .Pp
                     97: .Dp Cx Ic trace
                     98: .Pp
                     99: .Cx \&\ \&
                    100: .Op Ic in Ar procedure/function
                    101: .Cx \&\ \&
                    102: .Op Ic if Ar condition
                    103: .Cx
                    104: .Dp Cx Ic trace
                    105: .Cx \&\ \&
                    106: .Ar source-line-number
                    107: .Op Ic if Ar condition
                    108: .Cx \&\ \&
                    109: .Cx
                    110: .Dp Cx Ic trace
                    111: .Cx \&\ \&
                    112: .Ar procedure/function
                    113: .Cx \&\ \&
                    114: .Op Ic in Ar procedure/function
                    115: .Cx \&\ \&
                    116: .Op Ic if Ar condition
                    117: .Cx
                    118: .Dp Cx Ic trace
                    119: .Cx \&\ \&
                    120: .Ar expression
                    121: .Cx \&\ \&
                    122: .Ic at
                    123: .Cx \&\ \&
                    124: .Ar source-line-number
                    125: .Cx \&\ \&
                    126: .Op Ic if Ar condition
                    127: .Cx
                    128: .Dp Cx Ic trace
                    129: .Cx \&\ \&
                    130: .Ar variable
                    131: .Cx \&\ \&
                    132: .Op Ic in Ar procedure/function
                    133: .Cx \&\ \&
                    134: .Op Ic if Ar condition
                    135: .Cx
                    136: Have tracing information printed when the program is executed.
                    137: A number is associated with the command that is used
                    138: to turn the tracing off (see the
                    139: .Ic delete
                    140: command).
                    141: .Pp
                    142: The first argument describes what is to be traced.
                    143: If it is a
                    144: .Ar source-line-number  ,
                    145: then the line is printed
                    146: immediately prior to being executed.
                    147: Source line numbers in a file other than the current one
                    148: must be preceded by the name of the file and a colon, e.g.
                    149: ``mumble.p:17''.
                    150: .Pp
                    151: If the argument is a procedure or function name then
                    152: every time it is called, information is printed telling
                    153: what routine called it, from what source line it was called,
                    154: and what parameters were passed to it.
                    155: In addition, its return is noted, and if it's a function
                    156: then the value it is returning is also printed.
                    157: .Pp
                    158: If the argument is an
                    159: .Ar expression
                    160: with an
                    161: .Ic at
                    162: clause
                    163: then the value of the expression is printed whenever the
                    164: identified source line is reached.
                    165: .Pp
                    166: If the argument is a variable then the name and value of the variable
                    167: is printed whenever it changes.
                    168: Execution is substantially slower during this form of tracing.
                    169: .Pp
                    170: If no argument is specified then all source lines are printed
                    171: before they are executed.
                    172: Execution is substantially slower during this form of tracing.
                    173: .Pp
                    174: The clause
                    175: .Dq Cx Ic in
                    176: .Cx \&\ \&
                    177: .Ar procedure/function
                    178: .Cx
                    179: restricts tracing information
                    180: to be printed only while executing inside the given procedure
                    181: or function.
                    182: .Pp
                    183: .Ar Condition
                    184: is a Pascal boolean expression and is
                    185: evaluated prior to printing the tracing information;
                    186: if it is false then the information is not printed.
                    187: .Pp
                    188: There is no restriction on the amount of information
                    189: that can be traced.
                    190: .Pp
                    191: .ne 10
                    192: .Dp Cx Ic stop
                    193: .Cx \&\ \&
                    194: .Ic if
                    195: .Cx \&\ \&
                    196: .Ar condition
                    197: .Cx
                    198: .Dp Cx Ic stop
                    199: .Cx \&\ \&
                    200: .Ic at
                    201: .Cx \&\ \&
                    202: .Ar source-line-number
                    203: .Cx \&\ \&
                    204: .Op Ic if Ar condition
                    205: .Cx
                    206: .Dp Cx Ic stop
                    207: .Cx \&\ \&
                    208: .Ic in
                    209: .Cx \&\ \&
                    210: .Ar procedure /function
                    211: .Cx \&\ \&
                    212: .Op Ic if Ar condition
                    213: .Cx
                    214: .Dp Cx Ic stop
                    215: .Cx \&\ \&
                    216: .Ar variable
                    217: .Cx \&\ \&
                    218: .Op Ic if Ar condition
                    219: .Cx
                    220: Stop execution when the given line is reached, procedure or function
                    221: called, variable changed, or condition true.
                    222: .Pp
                    223: .Dp Cx Ic delete
                    224: .Cx \&\ \&
                    225: .Ar command-number
                    226: .Cx
                    227: The trace or stop corresponding to the given number is removed.
                    228: The numbers associated with traces and stops are printed by
                    229: the
                    230: .Ic status
                    231: command.
                    232: .Pp
                    233: .Dp Cx Ic status
                    234: .Cx \&\ \&
                    235: .Op Ic \&> Ar filename
                    236: .Cx
                    237: Print out
                    238: the currently active
                    239: .Ic trace
                    240: and
                    241: .Ic stop
                    242: commands.
                    243: .Pp
                    244: .Dp Ic cont
                    245: Continue execution from where it stopped.
                    246: This can only be
                    247: done when the program was stopped by an interrupt
                    248: or through use of the
                    249: .Ic stop
                    250: command.
                    251: .Pp
                    252: .Dp Ic step
                    253: Execute one source line.
                    254: .Pp
                    255: .Dp Ic next
                    256: Execute up to the next source line.
                    257: The difference between this and
                    258: .Ic step
                    259: is that
                    260: if the line contains a call to a procedure or function
                    261: the
                    262: .Ic step
                    263: command will stop at the beginning of that
                    264: block, while the
                    265: .Ic next
                    266: command will not.
                    267: .Pp
                    268: .Dp Cx Ic print
                    269: .Cx \&\ \&
                    270: .Ar expression
                    271: .Cx \&\ \&
                    272: .Op Ic \&, Ar expression ...
                    273: .Cx
                    274: Print out the values of the Pascal expressions.
                    275: Variables declared in an outer block but having
                    276: the same identifier as one in the current block may be
                    277: referenced as
                    278: .Dq Ar block-name \&. variable
                    279: .Pp
                    280: .Dp Cx Ic whatis
                    281: .Cx \&\ \&
                    282: .Ar identifier
                    283: .Cx
                    284: Print the declaration of the given identifier.
                    285: .Pp
                    286: .Dp Cx Ic which
                    287: .Cx \&\ \&
                    288: .Ar identifier
                    289: .Cx
                    290: Print the full qualification of the given identifer, i.e.
                    291: the outer blocks that the identifier is associated with.
                    292: .Pp
                    293: .Dp Cx Ic assign
                    294: .Cx \&\ \&
                    295: .Ar variable
                    296: .Cx \&\ \&
                    297: .Ar expression
                    298: .Cx
                    299: Assign the value of the expression to the variable.
                    300: .Pp
                    301: .Dp Cx Ic call
                    302: .Cx \&\ \&
                    303: .Ar procedure (parameters)
                    304: .Cx
                    305: Execute the object code associated with the named procedure or function.
                    306: .Pp
                    307: .Dp Ic help
                    308: Print out a synopsis of
                    309: .Nm pdx
                    310: commands.
                    311: .Pp
                    312: .Dp Ic gripe
                    313: Invokes a mail program to send a message to the person in charge of
                    314: .Nm pdx  .
                    315: .Pp
                    316: .Dp Ic where
                    317: Print out
                    318: a list of the active procedures and functions and the respective source
                    319: line where they are called.
                    320: .Pp
                    321: .Dp Cx Ic source
                    322: .Cx \&\ \&
                    323: .Ar filename
                    324: .Cx
                    325: Read
                    326: .Nm pdx
                    327: commands from the given
                    328: .Ar filename  .
                    329: Especially useful when the
                    330: .Ar filename
                    331: has been created by redirecting
                    332: a
                    333: .Ic status
                    334: command from an earlier debugging session.
                    335: .Pp
                    336: .Dp Cx Ic dump
                    337: .Cx \&\ \&
                    338: .Op Ic \&> Ar filename
                    339: .Cx
                    340: Print the names and values of all active
                    341: data.
                    342: .Pp
                    343: .Dp Cx Ic list
                    344: .Cx \&\ \&[
                    345: .Ar source-line-number
                    346: .Cx \&\ \&
                    347: .Op \&, Ar source-line-number
                    348: .Cx \&]
                    349: .Cx
                    350: .Dp Cx Ic list
                    351: .Cx \&\ \&
                    352: .Ar procedure/function
                    353: .Cx
                    354: List the lines in the current source file from the first line number to
                    355: the second inclusive.
                    356: As in the editor
                    357: ``$'' can be used to refer to the last line.
                    358: If no lines are specified, the entire file is listed.
                    359: If the name of a procedure or function is given
                    360: lines
                    361: .Ar n-k
                    362: to
                    363: .Ar n+k
                    364: are listed where
                    365: .Ar n
                    366: is the first statement
                    367: in the procedure or function and
                    368: .Ar k
                    369: is small.
                    370: .Pp
                    371: .Dp Cx Ic file
                    372: .Cx \&\ \&
                    373: .Op Ar filename
                    374: .Cx
                    375: Change the current source file name to
                    376: .Ar filename  .
                    377: If none is specified then the current source file name is printed.
                    378: .Pp
                    379: .Dp Cx Ic edit
                    380: .Cx \&\ \&
                    381: .Op Ar filename
                    382: .Cx
                    383: .Dp Cx Ic edit
                    384: .Cx \&\ \&
                    385: .Ar procedure/function-name
                    386: .Cx
                    387: Invoke an editor on
                    388: .Ar filename
                    389: or the current source file if none
                    390: is specified.
                    391: If a
                    392: .Ar procedure
                    393: or
                    394: .Ar function
                    395: name is specified,
                    396: the editor is invoked on the file that contains it.
                    397: Which editor is invoked by default depends on the installation.
                    398: The default can be overridden by setting the environment variable
                    399: EDITOR to the name of the desired editor.
                    400: .Pp
                    401: .Dp Ic pi
                    402: Recompile the program and read in the new symbol table information.
                    403: .Pp
                    404: .Dp Cx Ic sh
                    405: .Cx \&\ \&
                    406: .Ar command-line
                    407: .Cx
                    408: Pass the command line to the shell for execution.
                    409: The SHELL environment variable determines which shell is used.
                    410: .Pp
                    411: .Dp Cx Ic alias
                    412: .Cx \&\ \&
                    413: .Ar new-command-name
                    414: .Cx \&\ \&
                    415: .Ar old-command-name
                    416: .Cx
                    417: This command makes
                    418: .Nm pdx
                    419: respond to
                    420: .Ar new-command-name
                    421: the way it used to respond to
                    422: .Ar old-command-name  .
                    423: .Pp
                    424: .Dp Ic quit
                    425: Exit
                    426: .Nm pdx  .
                    427: .Dp
                    428: .Pp
                    429: The following commands deal with the program at the
                    430: .Ar px
                    431: instruction
                    432: level rather than source level.
                    433: They are not intended for general use.
                    434: .Dw Fl
                    435: .Di L
                    436: .Dp Cx Ic tracei
                    437: .Cx \&\ \&
                    438: .Op Ar address
                    439: .Cx \&\ \&
                    440: .Op Ic if Ar cond
                    441: .Cx
                    442: .Dp Cx Ic tracei
                    443: .Cx \&\ \&
                    444: .Op Ar variable
                    445: .Cx \&\ \&
                    446: .Op Ic at Ar address
                    447: .Cx \&\ \&
                    448: .Op Ic if Ar cond
                    449: .Cx
                    450: .Dp Cx Ic stopi
                    451: .Cx \&\ \&
                    452: .Op Ar address
                    453: .Cx \&\ \&
                    454: .Op Ic if Ar cond
                    455: .Cx
                    456: .Dp Cx Ic stopi
                    457: .Cx \&\ \&
                    458: .Op Ic at
                    459: .Cx \&\ \&
                    460: .Op Ar address
                    461: .Cx \&\ \&
                    462: .Op Ic if Ar cond
                    463: .Cx
                    464: Turn on tracing or set a stop using a
                    465: .Ic px
                    466: machine
                    467: instruction addresses.
                    468: .Pp
                    469: .Dp Cx Ic xi
                    470: .Cx \&\ \&
                    471: .Ar address
                    472: .Cx \&\ \&
                    473: .Op Ic \&, Ar address
                    474: .Cx
                    475: Print the instructions starting at the first
                    476: .Ar address  .
                    477: Instructions up to
                    478: the second
                    479: .Ar address
                    480: are printed.
                    481: .Pp
                    482: .Dp Cx Ic xd
                    483: .Cx \&\ \&
                    484: .Ar address
                    485: .Cx \&\ \&
                    486: .Op Ic \&, Ar address
                    487: .Cx
                    488: Print in octal the specified data location(s).
                    489: .Dp
                    490: .Sh ENVIRONMENT
                    491: .Tw Ar
                    492: .Tp Ev EDITOR
                    493: The
                    494: .Ic edit
                    495: function uses the
                    496: .Ev EDITOR
                    497: environment variable to see what editor to use.
                    498: .Tp Ev SHELL
                    499: The function
                    500: .Ic sh
                    501: checks the
                    502: .Ev SHELL
                    503: variable to see which shell to
                    504: execute.
                    505: .Tp
                    506: .Sh FILES
                    507: .Dw .pdxinit
                    508: .Di L
                    509: .Dp Pa \&obj
                    510: Pascal object file
                    511: .Dp Pa \&.pdxinit
                    512: .Nm Pdx
                    513: initialization file
                    514: .Dp
                    515: .Sh SEE ALSO
                    516: .Xr pi 1 ,
                    517: .Xr px 1
                    518: .br
                    519: .Em Ar An Introduction to Pdx
                    520: .Sh HISTORY
                    521: .Nm Pdx
                    522: appeared in 4.2 BSD.
                    523: .Sh BUGS
                    524: .Nm Pdx
                    525: does not understand sets,
                    526: and provides no information about files.
                    527: .Pp
                    528: The
                    529: .Ic whatis
                    530: command doesn't quite work for variant records.
                    531: .Pp
                    532: Bad things will happen if a procedure invoked with
                    533: the
                    534: .Ic call
                    535: command does a non-local goto.
                    536: .Pp
                    537: The commands
                    538: .Ic step
                    539: and
                    540: .Ic next
                    541: should be able to take a
                    542: .Ar count
                    543: that specifies how many lines to execute.
                    544: .Pp
                    545: There should be commands
                    546: .Ic stepi
                    547: and
                    548: .Ic nexti
                    549: that correspond
                    550: to
                    551: .Ic step
                    552: and
                    553: .Ic next
                    554: but work at the instruction level.
                    555: .Pp
                    556: There should be a way to get an address associated with
                    557: a line number, procedure or function, and variable.
                    558: .Pp
                    559: Most of the command names are too long.
                    560: .Pp
                    561: The alias facility is quite weak.
                    562: .Pp
                    563: A
                    564: .Xr csh 1
                    565: \- like history capability would improve the situation.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.