.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings.  \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
.    ds C`
.    ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD.  Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{
.    if \nF \{
.        de IX
.        tm Index:\\$1\t\\n%\t"\\$2"
..
.        if !\nF==2 \{
.            nr % 0
.            nr F 2
.        \}
.    \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "GDB 1"
.TH GDB 1 "2015-02-06" "gdb-7.8.1" "GNU Development Tools"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
gdb \- The GNU Debugger
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
gdb [\fB\-help\fR] [\fB\-nh\fR] [\fB\-nx\fR] [\fB\-q\fR]
[\fB\-batch\fR] [\fB\-cd=\fR\fIdir\fR] [\fB\-f\fR]
[\fB\-b\fR\ \fIbps\fR]
    [\fB\-tty=\fR\fIdev\fR] [\fB\-s\fR \fIsymfile\fR]
[\fB\-e\fR\ \fIprog\fR] [\fB\-se\fR\ \fIprog\fR]
[\fB\-c\fR\ \fIcore\fR] [\fB\-p\fR\ \fIprocID\fR]
    [\fB\-x\fR\ \fIcmds\fR] [\fB\-d\fR\ \fIdir\fR]
[\fIprog\fR|\fIprog\fR \fIprocID\fR|\fIprog\fR \fIcore\fR]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
The purpose of a debugger such as \s-1GDB\s0 is to allow you to see what is
going on \*(L"inside\*(R" another program while it executes \*(-- or what another
program was doing at the moment it crashed.
.PP
\&\s-1GDB\s0 can do four main kinds of things (plus other things in support of
these) to help you catch bugs in the act:
.IP "\(bu" 4
Start your program, specifying anything that might affect its behavior.
.IP "\(bu" 4
Make your program stop on specified conditions.
.IP "\(bu" 4
Examine what has happened, when your program has stopped.
.IP "\(bu" 4
Change things in your program, so you can experiment with correcting the
effects of one bug and go on to learn about another.
.PP
You can use \s-1GDB\s0 to debug programs written in C, C@t{++}, Fortran and
Modula\-2.
.PP
\&\s-1GDB\s0 is invoked with the shell command \f(CW\*(C`gdb\*(C'\fR.  Once started, it reads
commands from the terminal until you tell it to exit with the \s-1GDB\s0
command \f(CW\*(C`quit\*(C'\fR.  You can get online help from \s-1GDB\s0 itself
by using the command \f(CW\*(C`help\*(C'\fR.
.PP
You can run \f(CW\*(C`gdb\*(C'\fR with no arguments or options; but the most
usual way to start \s-1GDB\s0 is with one argument or two, specifying an
executable program as the argument:
.PP
.Vb 1
\&        gdb program
.Ve
.PP
You can also start with both an executable program and a core file specified:
.PP
.Vb 1
\&        gdb program core
.Ve
.PP
You can, instead, specify a process \s-1ID\s0 as a second argument, if you want
to debug a running process:
.PP
.Vb 2
\&        gdb program 1234
\&        gdb \-p 1234
.Ve
.PP
would attach \s-1GDB\s0 to process \f(CW1234\fR (unless you also have a file
named \fI1234\fR; \s-1GDB\s0 does check for a core file first).
With option \fB\-p\fR you can omit the \fIprogram\fR filename.
.PP
Here are some of the most frequently needed \s-1GDB\s0 commands:
.IP "\fBbreak [\fR\fIfile\fR\fB:]\fR\fIfunctiop\fR" 4
.IX Item "break [file:]functiop"
Set a breakpoint at \fIfunction\fR (in \fIfile\fR).
.IP "\fBrun [\fR\fIarglist\fR\fB]\fR" 4
.IX Item "run [arglist]"
Start your program (with \fIarglist\fR, if specified).
.IP "\fBbt\fR" 4
.IX Item "bt"
Backtrace: display the program stack.
.IP "\fBprint\fR \fIexpr\fR" 4
.IX Item "print expr"
Display the value of an expression.
.IP "\fBc\fR" 4
.IX Item "c"
Continue running your program (after stopping, e.g. at a breakpoint).
.IP "\fBnext\fR" 4
.IX Item "next"
Execute next program line (after stopping); step \fIover\fR any
function calls in the line.
.IP "\fBedit [\fR\fIfile\fR\fB:]\fR\fIfunction\fR" 4
.IX Item "edit [file:]function"
look at the program line where it is presently stopped.
.IP "\fBlist [\fR\fIfile\fR\fB:]\fR\fIfunction\fR" 4
.IX Item "list [file:]function"
type the text of the program in the vicinity of where it is presently stopped.
.IP "\fBstep\fR" 4
.IX Item "step"
Execute next program line (after stopping); step \fIinto\fR any
function calls in the line.
.IP "\fBhelp [\fR\fIname\fR\fB]\fR" 4
.IX Item "help [name]"
Show information about \s-1GDB\s0 command \fIname\fR, or general information
about using \s-1GDB.\s0
.IP "\fBquit\fR" 4
.IX Item "quit"
Exit from \s-1GDB.\s0
.PP
For full details on \s-1GDB,\s0
see \fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
by Richard M. Stallman and Roland H. Pesch.  The same text is available online
as the \f(CW\*(C`gdb\*(C'\fR entry in the \f(CW\*(C`info\*(C'\fR program.
.SH "OPTIONS"
.IX Header "OPTIONS"
Any arguments other than options specify an executable
file and core file (or process \s-1ID\s0); that is, the first argument
encountered with no
associated option flag is equivalent to a \fB\-se\fR option, and the second,
if any, is equivalent to a \fB\-c\fR option if it's the name of a file.
Many options have
both long and short forms; both are shown here.  The long forms are also
recognized 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 \fB+\fR rather than \fB\-\fR, though we illustrate the
more usual convention.)
.PP
All the options and command line arguments you give are processed
in sequential order.  The order makes a difference when the \fB\-x\fR
option is used.
.IP "\fB\-help\fR" 4
.IX Item "-help"
.PD 0
.IP "\fB\-h\fR" 4
.IX Item "-h"
.PD
List all options, with brief explanations.
.IP "\fB\-symbols=\fR\fIfile\fR" 4
.IX Item "-symbols=file"
.PD 0
.IP "\fB\-s\fR \fIfile\fR" 4
.IX Item "-s file"
.PD
Read symbol table from file \fIfile\fR.
.IP "\fB\-write\fR" 4
.IX Item "-write"
Enable writing into executable and core files.
.IP "\fB\-exec=\fR\fIfile\fR" 4
.IX Item "-exec=file"
.PD 0
.IP "\fB\-e\fR \fIfile\fR" 4
.IX Item "-e file"
.PD
Use file \fIfile\fR as the executable file to execute when
appropriate, and for examining pure data in conjunction with a core
dump.
.IP "\fB\-se=\fR\fIfile\fR" 4
.IX Item "-se=file"
Read symbol table from file \fIfile\fR and use it as the executable
file.
.IP "\fB\-core=\fR\fIfile\fR" 4
.IX Item "-core=file"
.PD 0
.IP "\fB\-c\fR \fIfile\fR" 4
.IX Item "-c file"
.PD
Use file \fIfile\fR as a core dump to examine.
.IP "\fB\-command=\fR\fIfile\fR" 4
.IX Item "-command=file"
.PD 0
.IP "\fB\-x\fR \fIfile\fR" 4
.IX Item "-x file"
.PD
Execute \s-1GDB\s0 commands from file \fIfile\fR.
.IP "\fB\-ex\fR \fIcommand\fR" 4
.IX Item "-ex command"
Execute given \s-1GDB \s0\fIcommand\fR.
.IP "\fB\-directory=\fR\fIdirectory\fR" 4
.IX Item "-directory=directory"
.PD 0
.IP "\fB\-d\fR \fIdirectory\fR" 4
.IX Item "-d directory"
.PD
Add \fIdirectory\fR to the path to search for source files.
.IP "\fB\-nh\fR" 4
.IX Item "-nh"
Do not execute commands from \fI~/.gdbinit\fR.
.IP "\fB\-nx\fR" 4
.IX Item "-nx"
.PD 0
.IP "\fB\-n\fR" 4
.IX Item "-n"
.PD
Do not execute commands from any \fI.gdbinit\fR initialization files.
.IP "\fB\-quiet\fR" 4
.IX Item "-quiet"
.PD 0
.IP "\fB\-q\fR" 4
.IX Item "-q"
.PD
\&\*(L"Quiet\*(R".  Do not print the introductory and copyright messages.  These
messages are also suppressed in batch mode.
.IP "\fB\-batch\fR" 4
.IX Item "-batch"
Run in batch mode.  Exit with status \f(CW0\fR after processing all the command
files specified with \fB\-x\fR (and \fI.gdbinit\fR, if not inhibited).
Exit with nonzero status if an error occurs in executing the \s-1GDB\s0
commands in the command files.
.Sp
Batch mode may be useful for running \s-1GDB\s0 as a filter, for example to
download and run a program on another computer; in order to make this
more useful, the message
.Sp
.Vb 1
\&        Program exited normally.
.Ve
.Sp
(which is ordinarily issued whenever a program running under \s-1GDB\s0 control
terminates) is not issued when running in batch mode.
.IP "\fB\-cd=\fR\fIdirectory\fR" 4
.IX Item "-cd=directory"
Run \s-1GDB\s0 using \fIdirectory\fR as its working directory,
instead of the current directory.
.IP "\fB\-fullname\fR" 4
.IX Item "-fullname"
.PD 0
.IP "\fB\-f\fR" 4
.IX Item "-f"
.PD
Emacs sets this option when it runs \s-1GDB\s0 as a subprocess.  It tells
\&\s-1GDB\s0 to output the full file name and line number in a standard,
recognizable fashion each time a stack frame is displayed (which
includes each time the program stops).  This recognizable format looks
like two \fB\e032\fR characters, followed by the file name, line number
and character position separated by colons, and a newline.  The
Emacs-to-GDB interface program uses the two \fB\e032\fR
characters as a signal to display the source code for the frame.
.IP "\fB\-b\fR \fIbps\fR" 4
.IX Item "-b bps"
Set the line speed (baud rate or bits per second) of any serial
interface used by \s-1GDB\s0 for remote debugging.
.IP "\fB\-tty=\fR\fIdevice\fR" 4
.IX Item "-tty=device"
Run using \fIdevice\fR for your program's standard input and output.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
The full documentation for \s-1GDB\s0 is maintained as a Texinfo manual.
If the \f(CW\*(C`info\*(C'\fR and \f(CW\*(C`gdb\*(C'\fR programs and \s-1GDB\s0's Texinfo
documentation are properly installed at your site, the command
.PP
.Vb 1
\&        info gdb
.Ve
.PP
should give you access to the complete manual.
.PP
\&\fIUsing \s-1GDB: A\s0 Guide to the \s-1GNU\s0 Source-Level Debugger\fR,
Richard M. Stallman and Roland H. Pesch, July 1991.
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright (c) 1988\-2014 Free Software Foundation, Inc.
.PP
Permission is granted to copy, distribute and/or modify this document
under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being \*(L"Free Software\*(R" and \*(L"Free Software Needs
Free Documentation\*(R", with the Front-Cover Texts being \*(L"A \s-1GNU\s0 Manual,\*(R"
and with the Back-Cover Texts as in (a) below.
.PP
(a) The \s-1FSF\s0's Back-Cover Text is: \*(L"You are free to copy and modify
this \s-1GNU\s0 Manual.  Buying copies from \s-1GNU\s0 Press supports the \s-1FSF\s0 in
developing \s-1GNU\s0 and promoting software freedom.\*(R"
