222 lines
12 KiB
HTML
222 lines
12 KiB
HTML
<html lang="en">
|
|
<head>
|
|
<title>gdb man - Debugging with GDB</title>
|
|
<meta http-equiv="Content-Type" content="text/html">
|
|
<meta name="description" content="Debugging with GDB">
|
|
<meta name="generator" content="makeinfo 4.13">
|
|
<link title="Top" rel="start" href="index.html#Top">
|
|
<link rel="up" href="Man-Pages.html#Man-Pages" title="Man Pages">
|
|
<link rel="next" href="gdbserver-man.html#gdbserver-man" title="gdbserver man">
|
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
|
<!--
|
|
Copyright (C) 1988-2019 Free Software Foundation, Inc.
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.3 or
|
|
any later version published by the Free Software Foundation; with the
|
|
Invariant Sections being ``Free Software'' and ``Free Software Needs
|
|
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
|
|
and with the Back-Cover Texts as in (a) below.
|
|
|
|
(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
|
|
this GNU Manual. Buying copies from GNU Press supports the FSF in
|
|
developing GNU and promoting software freedom.''
|
|
-->
|
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
|
<style type="text/css"><!--
|
|
pre.display { font-family:inherit }
|
|
pre.format { font-family:inherit }
|
|
pre.smalldisplay { font-family:inherit; font-size:smaller }
|
|
pre.smallformat { font-family:inherit; font-size:smaller }
|
|
pre.smallexample { font-size:smaller }
|
|
pre.smalllisp { font-size:smaller }
|
|
span.sc { font-variant:small-caps }
|
|
span.roman { font-family:serif; font-weight:normal; }
|
|
span.sansserif { font-family:sans-serif; font-weight:normal; }
|
|
--></style>
|
|
</head>
|
|
<body>
|
|
<div class="node">
|
|
<a name="gdb-man"></a>
|
|
<p>
|
|
Next: <a rel="next" accesskey="n" href="gdbserver-man.html#gdbserver-man">gdbserver man</a>,
|
|
Up: <a rel="up" accesskey="u" href="Man-Pages.html#Man-Pages">Man Pages</a>
|
|
<hr>
|
|
</div>
|
|
|
|
<h3 class="heading">gdb man</h3>
|
|
|
|
<!-- man title gdb The GNU Debugger -->
|
|
<!-- man begin SYNOPSIS gdb -->
|
|
<p>gdb [<samp><span class="option">-help</span></samp>] [<samp><span class="option">-nh</span></samp>] [<samp><span class="option">-nx</span></samp>] [<samp><span class="option">-q</span></samp>]
|
|
[<samp><span class="option">-batch</span></samp>] [<samp><span class="option">-cd=</span></samp><var>dir</var>] [<samp><span class="option">-f</span></samp>]
|
|
[<samp><span class="option">-b</span></samp> <!-- /@w --><var>bps</var>]
|
|
[<samp><span class="option">-tty=</span></samp><var>dev</var>] [<samp><span class="option">-s</span></samp> <var>symfile</var>]
|
|
[<samp><span class="option">-e</span></samp> <!-- /@w --><var>prog</var>] [<samp><span class="option">-se</span></samp> <!-- /@w --><var>prog</var>]
|
|
[<samp><span class="option">-c</span></samp> <!-- /@w --><var>core</var>] [<samp><span class="option">-p</span></samp> <!-- /@w --><var>procID</var>]
|
|
[<samp><span class="option">-x</span></samp> <!-- /@w --><var>cmds</var>] [<samp><span class="option">-d</span></samp> <!-- /@w --><var>dir</var>]
|
|
[<var>prog</var>|<var>prog</var> <var>procID</var>|<var>prog</var> <var>core</var>]
|
|
<!-- man end -->
|
|
|
|
<!-- man begin DESCRIPTION gdb -->
|
|
<p>The purpose of a debugger such as <span class="sc">gdb</span> is to allow you to see what is
|
|
going on “inside” another program while it executes – or what another
|
|
program was doing at the moment it crashed.
|
|
|
|
<p><span class="sc">gdb</span> can do four main kinds of things (plus other things in support of
|
|
these) to help you catch bugs in the act:
|
|
|
|
<ul>
|
|
<li>Start your program, specifying anything that might affect its behavior.
|
|
|
|
<li>Make your program stop on specified conditions.
|
|
|
|
<li>Examine what has happened, when your program has stopped.
|
|
|
|
<li>Change things in your program, so you can experiment with correcting the
|
|
effects of one bug and go on to learn about another.
|
|
</ul>
|
|
|
|
<p>You can use <span class="sc">gdb</span> to debug programs written in C, C<tt>++</tt>, Fortran and
|
|
Modula-2.
|
|
|
|
<p><span class="sc">gdb</span> is invoked with the shell command <code>gdb</code>. Once started, it reads
|
|
commands from the terminal until you tell it to exit with the <span class="sc">gdb</span>
|
|
command <code>quit</code>. You can get online help from <span class="sc">gdb</span> itself
|
|
by using the command <code>help</code>.
|
|
|
|
<p>You can run <code>gdb</code> with no arguments or options; but the most
|
|
usual way to start <span class="sc">gdb</span> is with one argument or two, specifying an
|
|
executable program as the argument:
|
|
|
|
<pre class="smallexample"> gdb program
|
|
</pre>
|
|
<p>You can also start with both an executable program and a core file specified:
|
|
|
|
<pre class="smallexample"> gdb program core
|
|
</pre>
|
|
<p>You can, instead, specify a process ID as a second argument, if you want
|
|
to debug a running process:
|
|
|
|
<pre class="smallexample"> gdb program 1234
|
|
gdb -p 1234
|
|
</pre>
|
|
<p class="noindent">would attach <span class="sc">gdb</span> to process <code>1234</code> (unless you also have a file
|
|
named <samp><span class="file">1234</span></samp>; <span class="sc">gdb</span> does check for a core file first).
|
|
With option <samp><span class="option">-p</span></samp> you can omit the <var>program</var> filename.
|
|
|
|
<p>Here are some of the most frequently needed <span class="sc">gdb</span> commands:
|
|
|
|
<!-- pod2man highlights the right hand side of the @item lines. -->
|
|
<dl>
|
|
<dt><samp><span class="env">break [</span><var>file</var><span class="env">:]</span><var>function</var></samp><dd>Set a breakpoint at <var>function</var> (in <var>file</var>).
|
|
|
|
<br><dt><samp><span class="env">run [</span><var>arglist</var><span class="env">]</span></samp><dd>Start your program (with <var>arglist</var>, if specified).
|
|
|
|
<br><dt><samp><span class="env">bt</span></samp><dd>Backtrace: display the program stack.
|
|
|
|
<br><dt><samp><span class="env">print </span><var>expr</var></samp><dd>Display the value of an expression.
|
|
|
|
<br><dt><samp><span class="env">c</span></samp><dd>Continue running your program (after stopping, e.g. at a breakpoint).
|
|
|
|
<br><dt><samp><span class="env">next</span></samp><dd>Execute next program line (after stopping); step <em>over</em> any
|
|
function calls in the line.
|
|
|
|
<br><dt><samp><span class="env">edit [</span><var>file</var><span class="env">:]</span><var>function</var></samp><dd>look at the program line where it is presently stopped.
|
|
|
|
<br><dt><samp><span class="env">list [</span><var>file</var><span class="env">:]</span><var>function</var></samp><dd>type the text of the program in the vicinity of where it is presently stopped.
|
|
|
|
<br><dt><samp><span class="env">step</span></samp><dd>Execute next program line (after stopping); step <em>into</em> any
|
|
function calls in the line.
|
|
|
|
<br><dt><samp><span class="env">help [</span><var>name</var><span class="env">]</span></samp><dd>Show information about <span class="sc">gdb</span> command <var>name</var>, or general information
|
|
about using <span class="sc">gdb</span>.
|
|
|
|
<br><dt><samp><span class="env">quit</span></samp><dd>Exit from <span class="sc">gdb</span>.
|
|
</dl>
|
|
|
|
<!-- man end -->
|
|
<!-- man begin OPTIONS gdb -->
|
|
<p>Any arguments other than options specify an executable
|
|
file and core file (or process ID); that is, the first argument
|
|
encountered with no
|
|
associated option flag is equivalent to a <samp><span class="option">-se</span></samp> option, and the second,
|
|
if any, is equivalent to a <samp><span class="option">-c</span></samp> 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 <samp><span class="option">+</span></samp> rather than <samp><span class="option">-</span></samp>, though we illustrate the
|
|
more usual convention.)
|
|
|
|
<p>All the options and command line arguments you give are processed
|
|
in sequential order. The order makes a difference when the <samp><span class="option">-x</span></samp>
|
|
option is used.
|
|
|
|
<dl>
|
|
<dt><samp><span class="env">-help</span></samp><dt><samp><span class="env">-h</span></samp><dd>List all options, with brief explanations.
|
|
|
|
<br><dt><samp><span class="env">-symbols=</span><var>file</var></samp><dt><samp><span class="env">-s </span><var>file</var></samp><dd>Read symbol table from file <var>file</var>.
|
|
|
|
<br><dt><samp><span class="env">-write</span></samp><dd>Enable writing into executable and core files.
|
|
|
|
<br><dt><samp><span class="env">-exec=</span><var>file</var></samp><dt><samp><span class="env">-e </span><var>file</var></samp><dd>Use file <var>file</var> as the executable file to execute when
|
|
appropriate, and for examining pure data in conjunction with a core
|
|
dump.
|
|
|
|
<br><dt><samp><span class="env">-se=</span><var>file</var></samp><dd>Read symbol table from file <var>file</var> and use it as the executable
|
|
file.
|
|
|
|
<br><dt><samp><span class="env">-core=</span><var>file</var></samp><dt><samp><span class="env">-c </span><var>file</var></samp><dd>Use file <var>file</var> as a core dump to examine.
|
|
|
|
<br><dt><samp><span class="env">-command=</span><var>file</var></samp><dt><samp><span class="env">-x </span><var>file</var></samp><dd>Execute <span class="sc">gdb</span> commands from file <var>file</var>.
|
|
|
|
<br><dt><samp><span class="env">-ex </span><var>command</var></samp><dd>Execute given <span class="sc">gdb</span> <var>command</var>.
|
|
|
|
<br><dt><samp><span class="env">-directory=</span><var>directory</var></samp><dt><samp><span class="env">-d </span><var>directory</var></samp><dd>Add <var>directory</var> to the path to search for source files.
|
|
|
|
<br><dt><samp><span class="env">-nh</span></samp><dd>Do not execute commands from <samp><span class="file">~/.gdbinit</span></samp>.
|
|
|
|
<br><dt><samp><span class="env">-nx</span></samp><dt><samp><span class="env">-n</span></samp><dd>Do not execute commands from any <samp><span class="file">.gdbinit</span></samp> initialization files.
|
|
|
|
<br><dt><samp><span class="env">-quiet</span></samp><dt><samp><span class="env">-q</span></samp><dd>“Quiet”. Do not print the introductory and copyright messages. These
|
|
messages are also suppressed in batch mode.
|
|
|
|
<br><dt><samp><span class="env">-batch</span></samp><dd>Run in batch mode. Exit with status <code>0</code> after processing all the command
|
|
files specified with <samp><span class="option">-x</span></samp> (and <samp><span class="file">.gdbinit</span></samp>, if not inhibited).
|
|
Exit with nonzero status if an error occurs in executing the <span class="sc">gdb</span>
|
|
commands in the command files.
|
|
|
|
<p>Batch mode may be useful for running <span class="sc">gdb</span> as a filter, for example to
|
|
download and run a program on another computer; in order to make this
|
|
more useful, the message
|
|
|
|
<pre class="smallexample"> Program exited normally.
|
|
</pre>
|
|
<p class="noindent">(which is ordinarily issued whenever a program running under <span class="sc">gdb</span> control
|
|
terminates) is not issued when running in batch mode.
|
|
|
|
<br><dt><samp><span class="env">-cd=</span><var>directory</var></samp><dd>Run <span class="sc">gdb</span> using <var>directory</var> as its working directory,
|
|
instead of the current directory.
|
|
|
|
<br><dt><samp><span class="env">-fullname</span></samp><dt><samp><span class="env">-f</span></samp><dd>Emacs sets this option when it runs <span class="sc">gdb</span> as a subprocess. It tells
|
|
<span class="sc">gdb</span> 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 ‘<samp><span class="samp">\032</span></samp>’ characters, followed by the file name, line number
|
|
and character position separated by colons, and a newline. The
|
|
Emacs-to-<span class="sc">gdb</span> interface program uses the two ‘<samp><span class="samp">\032</span></samp>’
|
|
characters as a signal to display the source code for the frame.
|
|
|
|
<br><dt><samp><span class="env">-b </span><var>bps</var></samp><dd>Set the line speed (baud rate or bits per second) of any serial
|
|
interface used by <span class="sc">gdb</span> for remote debugging.
|
|
|
|
<br><dt><samp><span class="env">-tty=</span><var>device</var></samp><dd>Run using <var>device</var> for your program's standard input and output.
|
|
</dl>
|
|
<!-- man end -->
|
|
|
|
<!-- man begin SEEALSO gdb -->
|
|
<!-- man end -->
|
|
</body></html>
|
|
|