4.3BSD-Tahoe/usr/src/old/man/sdb.0

Compare this file to the similar file:
Show the results in this format:




SDB(1)		    UNIX Programmer's Manual		   SDB(1)



NAME
     sdb - symbolic debugger

SYNOPSIS
     sdb [ objfil [ corfil [ directory ] ] ]

DESCRIPTION
     _S_d_b is a symbolic debugger which can be used with C, PASCAL,
     and F77 programs.	It may be used to examine their files and
     to provide a controlled environment for their execution.

     _O_b_j_f_i_l is an executable program file which has been compiled
     with the -g (debug) option.  The default for _o_b_j_f_i_l is
     a.out. _C_o_r_f_i_l is assumed to be a core image file produced
     after executing _o_b_j_f_i_l; the default for _c_o_r_f_i_l is core. The
     core file need not be present.

     It is useful to know that at any time there is a _c_u_r_r_e_n_t
     _l_i_n_e and _c_u_r_r_e_n_t _f_i_l_e. If _c_o_r_f_i_l exists then they are ini-
     tially set to the line and file containing the source state-
     ment at which the process terminated or stopped.  Otherwise,
     they are set to the first line in main.  The current line
     and file may be changed with the source file examination
     commands.

     Names of variables are written just as they are in C, PAS-
     CAL, or F77.  Variables local to a procedure may be accessed
     using the form `procedure:variable'.  If no procedure name
     is given, the procedure containing the current line is used
     by default.  It is also possible to refer to structure
     members as `variable.member', pointers to structure members
     as `variable->member' and array elements as
     `variable[number]'.  Combinations of these forms may also be
     used.

     It is also possible to specify a variable by its address.
     All forms of integer constants which are valid in C may be
     used, so that addresses may be input in decimal, octal or
     hexadecimal.

     Line numbers in the source program are referred to as
     `filename:number' or `procedure:number'.  In either case the
     number is relative to the beginning of the file.  If no pro-
     cedure or file name is given, the current file is used by
     default.  If no number is given, the first line of the named
     procedure or file is used.


     The commands for examining data in the program are:

     t	  Print a stack trace of the terminated or stopped pro-
	  gram.



Printed 7/26/87              4/29/85				1






SDB(1)		    UNIX Programmer's Manual		   SDB(1)



     T	  Print the top line of the stack trace.

     variable/_l_m
	  Print the value of variable according to length _l and
	  format _m. If _l and _m are omitted, sdb chooses a length
	  and format suitable for the variable's type as declared
	  in the program.  The length specifiers are:

	  b    one byte
	  h    two bytes (half word)
	  l    four bytes (long word)
	  number
	       string length for formats s and a

	  Legal values for _m are:

	  c    character
	  d    decimal
	  u    decimal, unsigned
	  o    octal
	  x    hexadecimal
	  f    32 bit single precision floating point
	  g    64 bit double precision floating point
	  s    Assume variable is a string pointer and print
	       characters until a null is reached.
	  a    Print characters starting at the variable's
	       address until a null is reached.
	  p    pointer to procedure

	  The length specifiers are only effective with the for-
	  mats d, u, o and x.  If one of these formats is speci-
	  fied and _l is omitted, the length defaults to the word
	  length of the host machine; 4 for the DEC VAX/11-780.
	  The last variable may be redisplayed with the command
	  `./'.

	  The sh(1) metacharacters * and ? may be used within
	  procedure and variable names, providing a limited form
	  of pattern matching.	If no procedure name is given,
	  both variables local to the current procedure and glo-
	  bal (common for F77) variables are matched, while if a
	  procedure name is specified then only variables local
	  to that procedure and matched.  To match only global
	  variables (or blank common for F77), the form `:pat-
	  tern' is used.  The name of a common block may be
	  specified instead of a procedure name for F77 programs.

     variable=_l_m
     linenumber=_l_m
     number=_l_m
	  Print the address of the variable or line number or the
	  value of the number in the specified format.	If no



Printed 7/26/87              4/29/85				2






SDB(1)		    UNIX Programmer's Manual		   SDB(1)



	  format is given, then `lx' is used.  The last variant
	  of this command provides a convenient way to convert
	  between decimal, octal and hexadecimal.

     variable!value
	  Set the variable to the given value.	The value may be
	  a number, character constant or a variable.  If the
	  variable is of type float or double, the value may also
	  be a floating constant.


     The commands for examining source files are

     e procedure
     e filename.c
	  Set the current file to the file containing the named
	  procedure or the named filename.  Set the current line
	  to the first line in the named procedure or file.  All
	  source files are assumed to be in _d_i_r_e_c_t_o_r_y. The
	  default for _d_i_r_e_c_t_o_r_y is the working directory.  If no
	  procedure or file name is given, the current procedure
	  and file names are reported.

     /regular expression/
	  Search forward from the current line for a line con-
	  taining a string matching the regular expression as in
	  ed(1).  The trailing `/' may be elided.

     ?regular expression?
	  Search backward from the current line for a line con-
	  taining a string matching the regular expression as in
	  ed(1).  The trailing `?' may be elided.

     p	  Print the current line.

     z	  Print the current line followed by the next 9 lines.
	  Set the current line to the last line printed.

     control-D
	  Scroll.  Print the next 10 lines.  Set the current line
	  to the last line printed.

     w	  Window.  Print the 10 lines around the current line.

     number
	  Set the current line to the given line number.  Print
	  the new current line.

     _c_o_u_n_t +
	  Advance the current line by _c_o_u_n_t lines.  Print the new
	  current line.




Printed 7/26/87              4/29/85				3






SDB(1)		    UNIX Programmer's Manual		   SDB(1)



     _c_o_u_n_t -
	  Retreat the current line by _c_o_u_n_t lines.  Print the new
	  current line.


     The commands for controlling the execution of the source
     program are:

     _c_o_u_n_t r _a_r_g_s
     _c_o_u_n_t R
	  Run the program with the given arguments.  The r com-
	  mand with no arguments reuses the previous arguments to
	  the program while the R command runs the program with
	  no arguments.  An argument beginning with `<' or `>'
	  causes redirection for the standard input or output
	  respectively.  If _c_o_u_n_t is given, it specifies the
	  number of breakpoints to be ignored.

     _l_i_n_e_n_u_m_b_e_r c _c_o_u_n_t
     _l_i_n_e_n_u_m_b_e_r C _c_o_u_n_t
	  Continue after a breakpoint or interrupt.  If _c_o_u_n_t is
	  given, it specifies the number of breakpoints to be
	  ignored.  C continues with the signal which caused the
	  program to stop and c ignores it.
9	  If a linenumber is specified then a temporary break-
	  point is placed at the line and execution is continued.
	  The breakpoint is deleted when the command finishes.

     _c_o_u_n_t s
	  Single step.	Run the program through _c_o_u_n_t lines.  If
	  no count is given then the program is run for one line.

     _c_o_u_n_t S
	  Single step, but step through subroutine calls.

     k	  Kill the debugged program.

     procedure(arg1,arg2,...)
     procedure(arg1,arg2,...)/_m
	  Execute the named procedure with the given arguments.
	  Arguments can be integer, character or string constants
	  or names of variables accessible from the current pro-
	  cedure.  The second form causes the value returned by
	  the procedure to be printed according to format _m.  If
	  no format is given, it defaults to `d'.

     _l_i_n_e_n_u_m_b_e_r b _c_o_m_m_a_n_d_s
	  Set a breakpoint at the given line.  If a procedure
	  name without a line number is given (e.g. `proc:'), a
	  breakpoint is placed at the first line in the procedure
	  even if it was not compiled with the debug flag.  If no
	  _l_i_n_e_n_u_m_b_e_r is given, a breakpoint is placed at the



Printed 7/26/87              4/29/85				4


9


SDB(1)		    UNIX Programmer's Manual		   SDB(1)



	  current line.
9	  If no _c_o_m_m_a_n_d_s are given then execution stops just
	  before the breakpoint and control is returned to sdb.
	  Otherwise the _c_o_m_m_a_n_d_s are executed when the breakpoint
	  is encountered and execution continues.  Multiple com-
	  mands are specified by separating them with semicolons.

     _l_i_n_e_n_u_m_b_e_r d
	  Delete a breakpoint at the given line.  If no
	  _l_i_n_e_n_u_m_b_e_r is given then the breakpoints are deleted
	  interactively: Each breakpoint location is printed and
	  a line is read from the standard input.  If the line
	  begins with a `y' or `d' then the breakpoint is
	  deleted.

     B	  Print a list of the currently active breakpoints.

     D	  Delete all breakpoints.

     l	  Print the last executed line.

     _l_i_n_e_n_u_m_b_e_r a
	  Announce.  If _l_i_n_e_n_u_m_b_e_r is of the form `proc:number',
	  the command effectively does a `linenumber b l'.  If
	  _l_i_n_e_n_u_m_b_e_r is of the form `proc:', the command effec-
	  tively does a `proc: b T'.


     Miscellaneous commands.

     ! _c_o_m_m_a_n_d
	  The command is interpreted by sh(1).

     newline
	  If the previous command printed a source line then
	  advance the current line by 1 line and print the new
	  current line.  If the previous command displayed a core
	  location then display the next core location.

     " _s_t_r_i_n_g
	  Print the given string.

     q	  Exit the debugger.


     The following commands also exist and are intended only for
     debugging the debugger.

     V	  Print the version number.

     X	  Print a list of procedures and files being debugged.
9


Printed 7/26/87              4/29/85				5






SDB(1)		    UNIX Programmer's Manual		   SDB(1)



     Y	  Toggle debug output.

FILES
     a.out
     core

SEE ALSO
     adb(1)

DIAGNOSTICS
     Error reports are either identical to those of adb(1) or are
     self-explanatory.

BUGS
     If a procedure is called when the program is _n_o_t stopped at
     a breakpoint (such as when a core image is being debugged),
     all variables are initialized before the procedure is
     started.  This makes it impossible to use a procedure which
     formats data from a core image.

     Arrays must be of one dimension and of zero origin to be
     correctly addressed by sdb.

     The default type for printing F77 parameters is incorrect.
     Their address is printed instead of their value.

     Tracebacks containing F77 subprograms with multiple entry
     points may print too many arguments in the wrong order, but
     their values are correct.

     Sdb understands Pascal, but not its types.
























Printed 7/26/87              4/29/85				6