_dnl__ Copyright (c) 1988 1989 1990 1991 Free Software Foundation, Inc. _dnl__ This file is part of the source for the GDB manual. _dnl__ $Id$ @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