_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 Commands, Running, Invocation, Top
@chapter _GDBN__ Commands

@menu
* Command Syntax::		Command Syntax
* Help::			Getting Help
@end menu

@node Command Syntax, Help, Commands, Commands
@section Command Syntax
A _GDBN__ command is a single line of input.  There is no limit on how long
it can be.  It starts with a command name, which is followed by arguments
whose meaning depends on the command name.  For example, the command
@code{step} accepts an argument which is the number of times to step,
as in @samp{step 5}.  You can also use the @code{step} command with
no arguments.  Some command names do not allow any arguments.

@cindex abbreviation
_GDBN__ command names may always be truncated if that abbreviation is
unambiguous.  Other possible command abbreviations are listed in the
documentation for individual commands.  Sometimes even ambiguous
abbreviations are allowed; for example, @code{s} is specially defined as
equivalent to @code{step} even though there are other commands whose
names start with @code{s}.

@cindex repeating commands
A blank line as input to _GDBN__ means to repeat the previous command.
Certain commands (for example, @code{run}) will not repeat this way;
these are commands for which unintentional repetition might cause
trouble and which you are unlikely to want to repeat.

The @code{list} and @code{x} commands construct new arguments when
repeated, rather than repeating exactly as typed, to permit easy
scanning of source or memory.

@kindex #
@cindex comment
A line of input starting with @kbd{#} is a comment; it does nothing.
This is useful mainly in command files (@xref{Command Files}).

@node Help,  , Command Syntax, Commands
@section Getting Help
@cindex online documentation
@kindex help
You can always ask _GDBN__ itself for information on its commands, using the
command @code{help}.  

@table @code
@item help
@itemx h
@kindex h
You can use @code{help} (abbreviated @code{h}) with no arguments to
display a short list of named categories of commands:
@smallexample
(_GDBP__) help
List of classes of commands:

running -- Running the program
stack -- Examining the stack
data -- Examining data
breakpoints -- Making program stop at certain points
files -- Specifying and examining files
status -- Status inquiries
support -- Support facilities
user-defined -- User-defined commands
aliases -- Aliases of other commands
obscure -- Obscure features

Type "help" followed by a class name for a list of commands in that class.
Type "help" followed by command name for full documentation.
Command name abbreviations are allowed if unambiguous.
(_GDBP__) 
@end smallexample

@item help @var{category}
Using one of the general help categories as an argument, you can get a
list of the individual commands in a category.  For example, here is the
help display for category @code{status}:
@smallexample
(_GDBP__) help status
Status inquiries.

List of commands:

show -- Generic command for showing things set with "set"
info -- Generic command for printing status

Type "help" followed by command name for full documentation.
Command name abbreviations are allowed if unambiguous.
(_GDBP__) 
@end smallexample

@item help @var{command}
With a command name as @code{help} argument, _GDBN__ will display a
short paragraph on how to use that command.  
@end table

In addition to @code{help}, you can use the _GDBN__ commands @code{info}
and @code{show} to inquire about the state of your program, or the state
of _GDBN__ itself.  Both commands support many topics of inquiry; this
manual introduces each of them in the appropriate context.  The listings
under @code{info} and under @code{show} in the Index point to
all the sub-commands.
@c FIXME: @pxref{Index} used to be here, but even though it shows up in
@c FIXME...the 'aux' file with a pageno the xref can't find it.  

@c @group
@table @code
@item info
@kindex info
@kindex i
This command (abbreviated @code{i}) is for describing the state of your
program; for example, it can list the arguments given to your program
(@code{info args}), the registers currently in use (@code{info
registers}), or the breakpoints you've set (@code{info breakpoints}).
You can get a complete list of the @code{info} sub-commands with
@w{@code{help info}}.

@kindex show
@item show
In contrast, @code{show} is for describing the state of _GDBN__ itself.
You can change most of the things you can @code{show}, by using the
related command @code{set}; for example, you can control what number
system is used for displays with @code{set radix}, or simply inquire
which is currently in use with @code{show radix}.  

@kindex info set
To display all the settable parameters and their current
values, you can use @code{show} with no arguments; you may also use
@code{info set}.  Both commands produce the same display.
@c FIXME: "info set" violates the rule that "info" is for state of
@c FIXME...program.  Ck w/ GNU: "info set" to be called something else,
@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
@end table
@c @end group

Here are three miscellaneous @code{show} subcommands, all of which are
exceptional in lacking corresponding @code{set} commands:

@table @code
@kindex show version
@item show version
Show what version of _GDBN__ is running.  You should include this
information in _GDBN__ bug-reports.  If multiple versions of _GDBN__ are
in use at your site, you may occasionally want to make sure what version
of _GDBN__ you're running; as _GDBN__ evolves, new commands are
introduced, and old ones may wither away.  The version number is also
announced when you start _GDBN__ with no arguments.

@kindex show copying
@item show copying
Display information about permission for copying _GDBN__.

@kindex show warranty
@item show warranty
Display the GNU ``NO WARRANTY'' statement.
@end table