You can alter the way GDB interacts with you by using the
set
command. For commands controlling how GDB displays
data, see section Print settings. Other settings are
described here.
GDB indicates its readiness to read a command by printing a string
called the prompt. This string is normally `(gdb)'. You
can change the prompt string with the set prompt
command. For
instance, when debugging GDB with GDB, it is useful to change
the prompt in one of the GDB sessions so that you can always tell
which one you are talking to.
Note: set prompt
does not add a space for you after the
prompt you set. This allows you to set a prompt which ends in a space
or a prompt that does not.
set prompt newprompt
show prompt
GDB reads its input commands via the readline interface. This
GNU library provides consistent behavior for programs which provide a
command line interface to the user. Advantages are GNU Emacs-style
or vi-style inline editing of commands, csh
-like history
substitution, and a storage and recall of command history across
debugging sessions.
You may control the behavior of command line editing in GDB with the
command set
.
set editing
set editing on
set editing off
show editing
GDB can keep track of the commands you type during your debugging sessions, so that you can be certain of precisely what happened. Use these commands to manage the GDB command history facility.
set history filename fname
GDBHISTFILE
, or to
`./.gdb_history' (`./_gdb_history' on MS-DOS) if this variable
is not set.
set history save
set history save on
set history filename
command. By default, this option is disabled.
set history save off
set history size size
HISTSIZE
, or to 256 if this variable is not set.
History expansion assigns special meaning to the character !.
Since ! is also the logical not operator in C, history expansion
is off by default. If you decide to enable history expansion with the
set history expansion on
command, you may sometimes need to
follow ! (when it is used as logical not, in an expression) with
a space or a tab to prevent it from being expanded. The readline
history facilities do not attempt substitution on the strings
!= and !(, even when history expansion is enabled.
The commands to control history expansion are:
set history expansion on
set history expansion
set history expansion off
vi
may wish to read it.
show history
show history filename
show history save
show history size
show history expansion
show history
by itself displays all four states.
show commands
show commands n
show commands +
Certain commands to GDB may produce large amounts of information output to the screen. To help you read all of it, GDB pauses and asks you for input at the end of each page of output. Type RET when you want to continue the output, or q to discard the remaining output. Also, the screen width setting determines when to wrap lines of output. Depending on what is being printed, GDB tries to break the line at a readable place, rather than simply letting it overflow onto the following line.
Normally GDB knows the size of the screen from the terminal
driver software. For example, on Unix GDB uses the termcap data base
together with the value of the TERM
environment variable and the
stty rows
and stty cols
settings. If this is not correct,
you can override it with the set height
and set
width
commands:
set height lpp
show height
set width cpl
show width
set
commands specify a screen height of lpp lines and
a screen width of cpl characters. The associated show
commands display the current settings.
If you specify a height of zero lines, GDB does not pause during
output no matter how long the output is. This is useful if output is to a
file or to an editor buffer.
Likewise, you can specify `set width 0' to prevent GDB
from wrapping its output.
You can always enter numbers in octal, decimal, or hexadecimal in
GDB by the usual conventions: octal numbers begin with
`0', decimal numbers end with `.', and hexadecimal numbers
begin with `0x'. Numbers that begin with none of these are, by
default, entered in base 10; likewise, the default display for
numbers--when no particular format is specified--is base 10. You can
change the default base for both input and output with the set
radix
command.
set input-radix base
set radix 012 set radix 10. set radix 0xasets the base to decimal. On the other hand, `set radix 10' leaves the radix unchanged no matter what it was.
set output-radix base
show input-radix
show output-radix
GDB can determine the ABI (Application Binary Interface) of your application automatically. However, sometimes you need to override its conclusions. Use these commands to manage GDB's view of the current ABI.
One GDB configuration can debug binaries for multiple operating
system targets, either via remote debugging or native emulation.
GDB will autodetect the OS ABI (Operating System ABI) in use,
but you can override its conclusion using the set osabi
command.
One example where this is useful is in debugging of binaries which use
an alternate C library (e.g. UCLIBC for GNU/Linux) which does
not have the same identifying marks that the standard C library for your
platform provides.
show osabi
set osabi
set osabi abi
Generally, the way that an argument of type float
is passed to a
function depends on whether the function is prototyped. For a prototyped
(i.e. ANSI/ISO style) function, float
arguments are passed unchanged,
according to the architecture's convention for float
. For unprototyped
(i.e. K&R style) functions, float
arguments are first promoted to type
double
and then passed.
Unfortunately, some forms of debug information do not reliably indicate whether a function is prototyped. If GDB calls a function that is not marked as prototyped, it consults set coerce-float-to-double.
set coerce-float-to-double
set coerce-float-to-double on
float
will be promoted to double
when passed
to an unprototyped function. This is the default setting.
set coerce-float-to-double off
float
will be passed directly to unprototyped
functions.
GDB needs to know the ABI used for your program's C++
objects. The correct C++ ABI depends on which C++ compiler was
used to build your application. GDB only fully supports
programs with a single C++ ABI; if your program contains code using
multiple C++ ABI's or if GDB can not identify your
program's ABI correctly, you can tell GDB which ABI to use.
Currently supported ABI's include "gnu-v2", for g++
versions
before 3.0, "gnu-v3", for g++
versions 3.0 and later, and
"hpaCC" for the HP ANSI C++ compiler. Other C++ compilers may
use the "gnu-v2" or "gnu-v3" ABI's as well. The default setting is
"auto".
show cp-abi
set cp-abi
set cp-abi abi
set cp-abi auto
By default, GDB is silent about its inner workings. If you are
running on a slow machine, you may want to use the set verbose
command. This makes GDB tell you when it does a lengthy
internal operation, so you will not think it has crashed.
Currently, the messages controlled by set verbose
are those
which announce that the symbol table for a source file is being read;
see symbol-file
in section Commands to specify files.
set verbose on
set verbose off
show verbose
set verbose
is on or off.
By default, if GDB encounters bugs in the symbol table of an object file, it is silent; but if you are debugging a compiler, you may find this information useful (see section Errors reading symbol files).
set complaints limit
show complaints
By default, GDB is cautious, and asks what sometimes seems to be a lot of stupid questions to confirm certain commands. For example, if you try to run a program which is already running:
(gdb) run The program being debugged has been started already. Start it from the beginning? (y or n)
If you are willing to unflinchingly face the consequences of your own commands, you can disable this "feature":
set confirm off
set confirm on
show confirm
set debug arch
show debug arch
set debug event
show debug event
set debug expression
show debug expression
set debug frame
show debug frame
set debug observer
show debug observer
set debug overload
show debug overload
set debug remote
show debug remote
set debug serial
show debug serial
set debug target
run
command.
show debug target
set debug varobj
show debug varobj
Go to the first, previous, next, last section, table of contents.