1991-05-23 02:14:26 +02:00
|
|
|
_dnl__ Copyright (c) 1988 1989 1990 1991 Free Software Foundation, Inc.
|
|
|
|
_dnl__ This file is part of the source for the GDB manual.
|
1991-07-24 03:51:32 +02:00
|
|
|
@c M4 FRAGMENT: $Id$
|
1991-05-23 02:14:26 +02:00
|
|
|
@node Sequences, Emacs, Controlling _GDBN__, Top
|
|
|
|
@chapter Canned Sequences of Commands
|
|
|
|
|
|
|
|
Aside from breakpoint commands (@pxref{Break Commands}), _GDBN__ provides two
|
|
|
|
ways to store sequences of commands for execution as a unit:
|
|
|
|
user-defined commands and command files.
|
|
|
|
|
|
|
|
@menu
|
|
|
|
* Define:: User-Defined Commands
|
|
|
|
* Command Files:: Command Files
|
|
|
|
* Output:: Commands for Controlled Output
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
@node Define, Command Files, Sequences, Sequences
|
|
|
|
@section User-Defined Commands
|
|
|
|
|
|
|
|
@cindex user-defined command
|
|
|
|
A @dfn{user-defined command} is a sequence of _GDBN__ commands to which you
|
|
|
|
assign a new name as a command. This is done with the @code{define}
|
|
|
|
command.
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item define @var{commandname}
|
|
|
|
@kindex define
|
|
|
|
Define a command named @var{commandname}. If there is already a command
|
|
|
|
by that name, you are asked to confirm that you want to redefine it.
|
|
|
|
|
|
|
|
The definition of the command is made up of other _GDBN__ command lines,
|
|
|
|
which are given following the @code{define} command. The end of these
|
|
|
|
commands is marked by a line containing @code{end}.
|
|
|
|
|
|
|
|
@item document @var{commandname}
|
|
|
|
@kindex document
|
|
|
|
Give documentation to the user-defined command @var{commandname}. The
|
|
|
|
command @var{commandname} must already be defined. This command reads
|
|
|
|
lines of documentation just as @code{define} reads the lines of the
|
|
|
|
command definition, ending with @code{end}. After the @code{document}
|
|
|
|
command is finished, @code{help} on command @var{commandname} will print
|
|
|
|
the documentation you have specified.
|
|
|
|
|
|
|
|
You may use the @code{document} command again to change the
|
|
|
|
documentation of a command. Redefining the command with @code{define}
|
|
|
|
does not change the documentation.
|
|
|
|
|
|
|
|
@item help user-defined
|
|
|
|
@kindex help user-defined
|
|
|
|
List all user-defined commands, with the first line of the documentation
|
|
|
|
(if any) for each.
|
|
|
|
|
|
|
|
@item info user
|
|
|
|
@itemx info user @var{commandname}
|
|
|
|
@kindex info user
|
|
|
|
Display the _GDBN__ commands used to define @var{commandname} (but not its
|
|
|
|
documentation). If no @var{commandname} is given, display the
|
|
|
|
definitions for all user-defined commands.
|
|
|
|
@end table
|
|
|
|
|
|
|
|
User-defined commands do not take arguments. When they are executed, the
|
|
|
|
commands of the definition are not printed. An error in any command
|
|
|
|
stops execution of the user-defined command.
|
|
|
|
|
|
|
|
Commands that would ask for confirmation if used interactively proceed
|
|
|
|
without asking when used inside a user-defined command. Many _GDBN__ commands
|
|
|
|
that normally print messages to say what they are doing omit the messages
|
|
|
|
when used in a user-defined command.
|
|
|
|
|
|
|
|
@node Command Files, Output, Define, Sequences
|
|
|
|
@section Command Files
|
|
|
|
|
|
|
|
@cindex command files
|
|
|
|
A command file for _GDBN__ is a file of lines that are _GDBN__ commands. Comments
|
|
|
|
(lines starting with @kbd{#}) may also be included. An empty line in a
|
|
|
|
command file does nothing; it does not mean to repeat the last command, as
|
|
|
|
it would from the terminal.
|
|
|
|
|
|
|
|
@cindex init file
|
|
|
|
@cindex @file{_GDBINIT__}
|
|
|
|
When you start _GDBN__, it automatically executes commands from its
|
|
|
|
@dfn{init files}. These are files named @file{_GDBINIT__}. _GDBN__
|
|
|
|
reads the init file (if any) in your home directory and then the init
|
|
|
|
file (if any) in the current working directory. (The init files are not
|
|
|
|
executed if you use the @samp{-nx} option; @pxref{Mode Options}.) You
|
|
|
|
can also request the execution of a command file with the @code{source}
|
|
|
|
command:
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item source @var{filename}
|
|
|
|
@kindex source
|
|
|
|
Execute the command file @var{filename}.
|
|
|
|
@end table
|
|
|
|
|
|
|
|
The lines in a command file are executed sequentially. They are not
|
|
|
|
printed as they are executed. An error in any command terminates execution
|
|
|
|
of the command file.
|
|
|
|
|
|
|
|
Commands that would ask for confirmation if used interactively proceed
|
|
|
|
without asking when used in a command file. Many _GDBN__ commands that
|
|
|
|
normally print messages to say what they are doing omit the messages
|
|
|
|
when called from command files.
|
|
|
|
|
|
|
|
@node Output, , Command Files, Sequences
|
|
|
|
@section Commands for Controlled Output
|
|
|
|
|
|
|
|
During the execution of a command file or a user-defined command, normal
|
|
|
|
_GDBN__ output is suppressed; the only output that appears is what is
|
|
|
|
explicitly printed by the commands in the definition. This section
|
|
|
|
describes three commands useful for generating exactly the output you
|
|
|
|
want.
|
|
|
|
|
|
|
|
@table @code
|
|
|
|
@item echo @var{text}
|
|
|
|
@kindex echo
|
|
|
|
@c I don't consider backslash-space a standard C escape sequence
|
|
|
|
@c because it's not in ANSI.
|
|
|
|
Print @var{text}. Nonprinting characters can be included in @var{text}
|
|
|
|
using C escape sequences, such as @samp{\n} to print a newline. @b{No
|
|
|
|
newline will be printed unless you specify one.} In addition to the
|
|
|
|
standard C escape sequences, a backslash followed by a space stands for a
|
|
|
|
space. This is useful for outputting a string with spaces at the
|
|
|
|
beginning or the end, since leading and trailing spaces are otherwise
|
|
|
|
trimmed from all arguments. Thus, to print @samp{@ and foo =@ }, use the
|
|
|
|
command @samp{echo \@ and foo = \@ }.
|
|
|
|
@c FIXME: verify hard copy actually issues enspaces for '@ '! Will this
|
|
|
|
@c confuse texinfo?
|
|
|
|
|
|
|
|
A backslash at the end of @var{text} can be used, as in C, to continue
|
|
|
|
the command onto subsequent lines. For example,
|
|
|
|
|
|
|
|
@example
|
|
|
|
echo This is some text\n\
|
|
|
|
which is continued\n\
|
|
|
|
onto several lines.\n
|
|
|
|
@end example
|
|
|
|
|
|
|
|
produces the same output as
|
|
|
|
|
|
|
|
@example
|
|
|
|
echo This is some text\n
|
|
|
|
echo which is continued\n
|
|
|
|
echo onto several lines.\n
|
|
|
|
@end example
|
|
|
|
|
|
|
|
@item output @var{expression}
|
|
|
|
@kindex output
|
|
|
|
Print the value of @var{expression} and nothing but that value: no
|
|
|
|
newlines, no @samp{$@var{nn} = }. The value is not entered in the
|
|
|
|
value history either. @xref{Expressions} for more information on
|
|
|
|
expressions.
|
|
|
|
|
|
|
|
@item output/@var{fmt} @var{expression}
|
|
|
|
Print the value of @var{expression} in format @var{fmt}. You can use
|
|
|
|
the same formats as for @code{print}; @pxref{Output formats}, for more
|
|
|
|
information.
|
|
|
|
|
|
|
|
@item printf @var{string}, @var{expressions}@dots{}
|
|
|
|
@kindex printf
|
|
|
|
Print the values of the @var{expressions} under the control of
|
|
|
|
@var{string}. The @var{expressions} are separated by commas and may
|
|
|
|
be either numbers or pointers. Their values are printed as specified
|
|
|
|
by @var{string}, exactly as if the program were to execute
|
|
|
|
|
|
|
|
@example
|
|
|
|
printf (@var{string}, @var{expressions}@dots{});
|
|
|
|
@end example
|
|
|
|
|
|
|
|
For example, you can print two values in hex like this:
|
|
|
|
|
|
|
|
@example
|
|
|
|
printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
|
|
|
|
@end example
|
|
|
|
|
|
|
|
The only backslash-escape sequences that you can use in the format
|
|
|
|
string are the simple ones that consist of backslash followed by a
|
|
|
|
letter.
|
|
|
|
@end table
|