_dnl__								-*- Texinfo -*-
_dnl__ Copyright (c) 1988 1989 1990 1991 Free Software Foundation, Inc.
_dnl__ This file is part of the source for the GDB manual.
@c M4 FRAGMENT: $Id$
@node Invocation, Commands, Sample Session, Top
@chapter Getting In and Out of _GDBN__

@menu
* Starting _GDBN__::		Starting _GDBN__
* Leaving _GDBN__::			Leaving _GDBN__
* Shell Commands::		Shell Commands
@end menu

@node Starting _GDBN__, Leaving _GDBN__, Invocation, Invocation
@section Starting _GDBN__

_GDBN__ is invoked with the shell command @code{_GDBP__}.  Once started,
it reads commands from the terminal until you tell it to exit.

You can run @code{_GDBP__} with no arguments or options; but the most
usual way to start _GDBN__ is with one argument or two, specifying an
executable program as the argument:
@example
_GDBP__ program
@end example
@noindent
You can also start with both an executable program and a core file specified:
@example
_GDBP__ program core
@end example

@noindent
You can further control how _GDBN__ starts up by using command-line
options.  _GDBN__ itself can remind you of the options available:
@example
_GDBP__ -help
@end example
@noindent
will display all available options and briefly describe their use
(@samp{_GDBP__ -h} is a shorter equivalent).

All options and command line arguments you give are processed
in sequential order.  The order makes a difference when the
@samp{-x} option is used.  

@menu
* File Options::		Choosing Files
* Mode Options::		Choosing Modes
_if__(!_GENERIC__)
_include__(gdb.inv.m-m4)_dnl__
_fi__(!_GENERIC__)
@end menu

@node File Options, Mode Options, Starting _GDBN__, Starting _GDBN__
@subsection Choosing Files

As shown above, any arguments other than options specify an executable
file and core file; that is, the first argument encountered with no
associated option flag is equivalent to a @samp{-se} option, and the
second, if any, is equivalent to a @samp{-c} option.  Many options have
both long and short forms; both are shown here.  The long forms are also
recognized if you truncate them, so long as enough of the option is
present to be unambiguous.  (If you prefer, you can flag option
arguments with @samp{+} rather than @samp{-}, though we illustrate the
more usual convention.)

@table @code
@item -symbols=@var{file}
@itemx -s @var{file}
Read symbol table from file @var{file}.

@item -exec=@var{file}
@itemx -e @var{file}
Use file @var{file} as the executable file to execute when
appropriate, and for examining pure data in conjunction with a core
dump.

@item -se @var{file}
Read symbol table from file @var{file} and use it as the executable
file.

@item -core=@var{file}
@itemx -c @var{file}
Use file @var{file} as a core dump to examine.

@item -command=@var{file}
@itemx -x @var{file}
Execute _GDBN__ commands from file @var{file}.  @xref{Command Files}.

@item -directory=@var{directory}
@itemx -d @var{directory}
Add @var{directory} to the path to search for source files.
@end table

_if__(!_GENERIC__)
@node Mode Options, i960-Nindy Remote, File Options, Starting _GDBN__
_fi__(!_GENERIC__)
_if__(_GENERIC__)
@node Mode Options,  , File Options, Starting _GDBN__
_fi__(_GENERIC__)
@subsection Choosing Modes

@table @code
@item -nx
@itemx -n
Do not execute commands from any @file{_GDBINIT__} initialization files.
Normally, the commands in these files are executed after all the
command options and arguments have been processed.  @xref{Command
Files}.

@item -quiet
@itemx -q
``Quiet''.  Do not print the introductory and copyright messages.  These
messages are also suppressed in batch mode, or if an executable file name is
specified on the _GDBN__ command line.

@item -batch
Run in batch mode.  Exit with status @code{0} after processing all the command
files specified with @samp{-x} (and @file{_GDBINIT__}, if not inhibited).
Exit with nonzero status if an error occurs in executing the _GDBN__
commands in the command files.  

Batch mode may be useful for running _GDBN__ as a filter, for example to
download and run a program on another computer; in order to make this
more useful, the message 
@example
Program exited normally.
@end example
@noindent
(which is ordinarily issued whenever a program running under _GDBN__ control
terminates) is not issued when running in batch mode.

@item -cd @var{directory}
Run _GDBN__ using @var{directory} as its working directory,
instead of the current directory.

@item -fullname
@itemx -f
This option is used when Emacs runs _GDBN__ as a subprocess.  It tells _GDBN__
to output the full file name and line number in a standard,
recognizable fashion each time a stack frame is displayed (which
includes each time the program stops).  This recognizable format looks
like two @samp{\032} characters, followed by the file name, line number
and character position separated by colons, and a newline.  The
Emacs-to-_GDBN__ interface program uses the two @samp{\032} characters as
a signal to display the source code for the frame.

@item -b @var{bps}
Set the line speed (baud rate or bits per second) of any serial
interface used by _GDBN__ for remote debugging.

@item -tty @var{device}
Run using @var{device} for your program's standard input and output.
@c FIXME: kingdon thinks there's more to -tty.  Investigate.
@end table

_if__(!_GENERIC__)
_include__(gdb.inv.s-m4)
_fi__(!_GENERIC__)

@node Leaving _GDBN__, Shell Commands, Starting _GDBN__, Invocation
@section Leaving _GDBN__
@cindex exiting _GDBN__
@table @code
@item quit
@kindex quit
@kindex q
To exit _GDBN__, use the @code{quit} command (abbreviated @code{q}), or type
an end-of-file character (usually @kbd{C-d}).  
@end table

@cindex interrupt
An interrupt (often @kbd{C-c}) will not exit from _GDBN__, but rather
will terminate the action of any _GDBN__ command that is in progress and
return to _GDBN__ command level.  It is safe to type the interrupt
character at any time because _GDBN__ does not allow it to take effect
until a time when it is safe.

If you've been using _GDBN__ to control an attached process or device,
you can release it with the @code{detach} command; @pxref{Attach}.

@node Shell Commands,  , Leaving _GDBN__, Invocation
@section Shell Commands
If you just need to execute occasional shell commands during your
debugging session, there's no need to leave or suspend _GDBN__; you can
just use the @code{shell} command.

@table @code
@item shell @var{command string}
@kindex shell
@cindex shell escape
Directs _GDBN__ to invoke an inferior shell to execute @var{command
string}.  If it exists, the environment variable @code{SHELL} is used
for the name of the shell to run.  Otherwise _GDBN__ uses
@code{/bin/sh}.
@end table

The utility @code{make} is often needed in development environments.
You don't have to use the @code{shell} command for this purpose in _GDBN__:

@table @code
@item make @var{make-args}
@kindex make
@cindex calling make
Causes _GDBN__ to execute an inferior @code{make} program with the specified
arguments.  This is equivalent to @samp{shell make @var{make-args}}.
@end table
