When GDB starts, it reads any arguments other than options as
specifying an executable file and core file (or process ID). This is
the same as if the arguments were specified by the -se
and
-c
(or -p
options respectively. (GDB reads the
first argument that does not have an associated option flag as
equivalent to the -se
option followed by that argument; and the
second argument that does not have an associated option flag, if any, as
equivalent to the -c
/-p
option followed by that argument.)
If the second argument begins with a decimal digit, GDB will
first attempt to attach to it as a process, and if that fails, attempt
to open it as a corefile. If you have a corefile whose name begins with
a digit, you can prevent GDB from treating it as a pid by
prefixing it with ./
, eg. ./12345
.
If GDB has not been configured to included core file support, such as for most embedded targets, then it will complain about a second argument and ignore it.
Many options have both long and short forms; both are shown in the
following list. GDB also recognizes the long forms 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 --
rather
than -
, though we illustrate the more usual convention.)
-symbols
file
-s
file
-exec
file
-e
file
-se
file
-core
file
-c
file
-c
number
-pid
number
-p
number
attach
command.
If there is no such process, GDB will attempt to open a core
file named number.
-command
file
-x
file
-directory
directory
-d
directory
-m
-mapped
mmap
system call, you can use this option
to have GDB write the symbols from your
program into a reusable file in the current directory. If the program you are debugging is
called /tmp/fred
, the mapped symbol file is /tmp/fred.syms
.
Future GDB debugging sessions notice the presence of this file,
and can quickly map in symbol information from it, rather than reading
the symbol table from the executable program.
The .syms
file is specific to the host machine where GDB
is run. It holds an exact image of the internal GDB symbol
table. It cannot be shared across multiple host platforms.
-r
-readnow
You typically combine the -mapped
and -readnow
options in
order to build a .syms
file that contains complete symbol
information. (See Commands to specify files, for information
on .syms
files.) A simple GDB invocation to do nothing
but build a .syms
file for future use is:
gdb -batch -nx -mapped -readnow programname