Annotation of 43BSDReno/pgrm/pascal/pdx/pdx.1, revision 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.