19.1 Active Targets
There are three classes of targets: processes, core files, and executable files. gdb can work concurrently on up to three active targets, one in each class. This allows you to (for example) start a process and inspect its activity without abandoning your work on a core file.
For example, if you execute gdb a.out, then the executable file
a.out is the only active target. If you designate a core file as
well—presumably from a prior run that crashed and coredumped—then
gdb has two active targets and uses them in tandem, looking
first in the corefile target, then in the executable file, to satisfy
requests for memory addresses. (Typically, these two classes of target
are complementary, since core files contain only a program's
read-write memory—variables and so on—plus machine status, while
executable files contain only the program text and initialized data.)
When you type
run, your executable file becomes an active process
target as well. When a process target is active, all gdb
commands requesting memory addresses refer to that target; addresses in
an active core file or executable file target are obscured while the
process target is active.
exec-file commands to select a new
core file or executable target (see Commands to Specify Files). To specify as a target a process that is already running, use
attach command (see Debugging an Already-running Process).